|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Evgenij Masherov 2:5020/175.2 24 Oct 2002 21:33:10 To : Dmitriy Kozlov Subject : pавномеpное и ноpмальное pаспpеделение --------------------------------------------------------------------------------
Thu Oct 17 2002 22:36, Dmitriy Kozlov wrote to All:
DK> интеpесyют алгоpитмы полyчения сабжа.
Равномерное распределение продуцируется любым стандартным генератором
случайных чисел. Его нужно только привести к желаемому интервалу.
Общий подход к получению любого желаемого распределения состоит во взятии от
равномерно (0;1) распределенного числа обратной функции распределения. К
сожалению, для нормального обратная функция не выражается аналитически и
сложно вычисляется. Поэтому применяются специальные методы.
1. Центральная предельная теорема. Согласно ней сумма достаточно большого
числа случайных чисел будет приближаться к нормальному распределению (точная
формулировка требует введения понятия семиинварианты и пр. и есть во всех
курсах теорвера). Часто берут 12 равномерных на (0;1) случайных чисел. Вычитая
из их суммы 6, получим число с распределением, близким к нормальному с нулевым
средним и единичной дисперсией (волшебное 12 появилось потому, что при менее
10 от нормального далеко, более 20 существенного улучшения не дает, а выбор
именно 12 позволяет обойтись без поправочных коэффициентов). При необходимости
улучшить качество приближения к нормальному - можно использовать поправочный
полином Тичроу (Тейчроева), приведенный у Кнута.
A1 = 3.949846138;
A3 = 0.252408784;
A5 = 0.076542912;
A7 = 0.008355968;
A9 = 0.029899776;
SUM=0.0
do I=1, 12
call RANDOM_NUMBER(RAND)
SUM=SUM+RAND
enddo
R=(SUM-6.0)/4.0;
R2=R*R
Gauss=((((A9*R2+A7)*R2+A5)*R2+A3)*R2+A1)*R
2. Полярный метод.
Генерируется два числа Х1 и Х2, также равномерные на (0;1). Если сумма их
квадратов S=X1^2+X2^2 больше единицы - берутся два новых, иначе вычисляется
Q=sqrt(-2*ln(S)/S)
Y1=X1*Q
Y2=X2*Q
При этом получаются два (независимых!) нормально (0;1) распределенных числа
3. Метод, приводимый во втором томе Кнута. Сам я не реализовывал.
Евгений Машеров АКА СанитарЖеня
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33006e0bb58b.html, оценка из 5, голосов 10
|