PABHOMEPHOE И HOPMAЛЬНOE PACПPEДEЛEНИE

From
Evgenij Masherov (2:5020/175.2)
To
Yuri Sergeev
Date
2003-01-15T21:49:24Z
Area
RU.ALGORITHMS
From: "Evgenij Masherov" <EMasherow@nsi.ru>

Wed Jan 15 2003 18:38, Yuri Sergeev wrote to All:

 
 YS> Heoбходимо сгенеpиpовать данные с subj-евыми pаспpеделениями.
 YS> Данные 2-меpные.
 YS> Куда смотpеть, может кто поделится исходниками.

 Поскольку не совсем понимаю смысла ремарки про 2-х мерные, скажу, как делать
для одномерных. Если две переменные - повторить дважды (но тут можно требовать
еще заданной коррелированности), если матрица заполняется - для каждого
элемента.

1. Равномерное.
y=rand()/RAND_MAX; // Равномерное на (0;1)
y=2.0*rand()/RAND_MAX-1; // Равномерное на (-1;1)
2. Нормальное.
а. ЦПТ
Y=-6;
for(i=0;i<12;i++)
Y+=rand()/RAND_MAX;
// Весьма был популярный метод, хотя качество не вполне... Но с поправкой
Тичроу сойдет
б. Полярный метод
L:
x1=2.0*rand()/RAND_MAX-1;
x2=2.0*rand()/RAND_MAX-1;
S=x1*x1+x2*x2;
if (S>1) goto L;
S=sqrt(-2.0*log(S)/S);
y1=x1*S;
y2=x2*S;
// При этом они независимы!
// Есть модификация без возврата, с вычислением синуса и косинуса, что ныне
недорого...

Евгений Машеров АКА СанитарЖеня

--- ifmail v.2.15dev5
 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)