ГСЧ с нормальным распределением
От: RAGIC Беларусь  
Дата: 13.05.04 18:41
Оценка:
Товарищи! Срочно нужен исходник (желательно на с++, можно и на паскале) ГСЧ с нормальным распределением.
Re: ГСЧ с нормальным распределением
От: pangolin  
Дата: 14.05.04 05:12
Оценка: -1
Здравствуйте, RAGIC, Вы писали:

RAG>Товарищи! Срочно нужен исходник (желательно на с++, можно и на паскале) ГСЧ с нормальным распределением.


Сложи 12 равномерно распределенных на (-0.5, 0.5] величин и получишь N(0, 1).
Re: ГСЧ с нормальным распределением
От: Jenyay http://jenyay.net
Дата: 14.05.04 05:23
Оценка:
Здравствуйте, RAGIC, Вы писали:

RAG>Товарищи! Срочно нужен исходник (желательно на с++, можно и на паскале) ГСЧ с нормальным распределением.


Самое простое — много раз сложить числа с равномерным распределением.
... << RSDN@Home 1.1.3 stable >>
Софт, исходники и фото
Re: ГСЧ с нормальным распределением
От: MBo  
Дата: 14.05.04 09:59
Оценка:
Здравствуйте, RAGIC, Вы писали:

RAG>Товарищи! Срочно нужен исходник (желательно на с++, можно и на паскале) ГСЧ с нормальным распределением.


function RandG(Mean, StdDev: Extended): Extended;
{ Marsaglia-Bray algorithm }
var
U1, S2: Extended;
begin
repeat
U1 := 2*Random — 1;
S2 := Sqr(U1) + Sqr(2*Random-1);
until S2 < 1;
Result := Sqrt(-2*Ln(S2)/S2) * U1 * StdDev + Mean;
end;

// Random здесь — вещественное в [0..1)
Re[2]: ГСЧ с нормальным распределением
От: AMogil Россия  
Дата: 14.05.04 10:50
Оценка:
Здравствуйте, MBo, Вы писали:

Кстати, задающему вопрос — на будущее. Это исходники VCL

MBo>function RandG(Mean, StdDev: Extended): Extended;

MBo>{ Marsaglia-Bray algorithm }
MBo>var
MBo> U1, S2: Extended;
MBo>begin
MBo> repeat
MBo> U1 := 2*Random — 1;
MBo> S2 := Sqr(U1) + Sqr(2*Random-1);
MBo> until S2 < 1;
MBo> Result := Sqrt(-2*Ln(S2)/S2) * U1 * StdDev + Mean;
MBo>end;

MBo>// Random здесь — вещественное в [0..1)



Re[2]: ГСЧ с нормальным распределением
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 14.05.04 10:53
Оценка:
Здравствуйте, MBo, Вы писали:


MBo>function RandG(Mean, StdDev: Extended): Extended;

MBo>{ Marsaglia-Bray algorithm }
MBo>var
MBo> U1, S2: Extended;
MBo>begin
MBo> repeat
MBo> U1 := 2*Random — 1;
MBo> S2 := Sqr(U1) + Sqr(2*Random-1);
MBo> until S2 < 1;
MBo> Result := Sqrt(-2*Ln(S2)/S2) * U1 * StdDev + Mean;
MBo>end;

Чисто ради праздного любопытства: зачем там цикл?
Re[3]: Извините, погорячился. Посыпаю голову пеплом.
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 14.05.04 10:56
Оценка:
Re[3]: ГСЧ с нормальным распределением
От: RAGIC Беларусь  
Дата: 14.05.04 15:11
Оценка:
"...исходники VCL." — ну, я в Борлондах пока не пишу ничего, но буду знать.

Спасиббо, очень выручили! С меня кружка пива
Re[2]: ГСЧ с нормальным распределением
От: Dimonka Верблюд  
Дата: 27.09.04 08:28
Оценка: 8 (1)
RAG>>Товарищи! Срочно нужен исходник (желательно на с++, можно и на паскале) ГСЧ с нормальным распределением.

И ещё один:

function Gauss(Mean,Sigma:double): Double;
var
  x, y, z: Double;
begin
  //  Return a number distributed following a gaussian with mean and sigma
  y := Rndm();
  if y = 0 then y := Rndm();
  z := Rndm();
  x := z * 6.283185;
  Result := Mean + Sigma * Sin(x) * Sqrt(-2 * Ln(y));
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.