
4. Генерация случайных чисел
Дополнительной целью данного раздела, помимо основной – заявленной в заголовке, является "освежение" некоторых знаний из области матстатистики.
Несмотря на то, что в настоящее время в большинстве ИСП имеются хорошие готовые датчики псевдослучайных чисел, студент математик должен представлять возможные механизмы генерации псевдослучайных чисел и способы проверки получающихся последовательностей чисел с помощью статистических тестов.
Далее везде речь идет о псевдослучайных числах, равномерно распределенных в интервале [0,1].
К генераторам псевдослучайных чисел предъявляют следующие основные требования:
числа должны быть равномерно распределены в интервале [0,1] и независимы;
должно генерироваться достаточно большое число неповторяющихся чисел, то есть период генератора должен быть достаточно длинным;
последовательность чисел должна быть воспроизводима многократно. Задание иных "начальных условий" должно порождать иную последовательность чисел;
генератор должен быть очень быстродействующим и требовать мало памяти.
Практически общепризнано, что перечисленным требованиям наилучшим образом удовлетворяет, так называемый, конгруэнтный метод, основанный на следующем рекурсивном уравнении:
zi+1 = (аzi + b) (mod c), xi+1 = zi+1/c, i = 0,1,…,
где zi – ненормализованное случайное целое число; z0 – начальное значение (его иногда называют корнем);
xi+1 [0,1] – псевдослучайное число.
Выбор констант a, b, c определяет ту или иную разновидность метода. Укажем некоторые из них.
Смешанные конгруэнтные генераторы:
с = 2В, где В разрядность компьютера;
b – простое относительно с число {наибольший общий делитель b и с равен 1};
а = 1 + 4k, где k – целое число.
Такой генератор порождает последовательности псевдослучайных чисел с периодом, равным 2В.
Мультипликативные конгруэнтные генераторы:
с = 2В ;
b =0;
а = 3 + 8k или а = 1 + 4k, где k – целое число;
z0 – нечетно.
Такой генератор порождает последовательности псевдослучайных чисел с периодом, равным 2В2.
Одна из модификаций мультипликативного конгруэнтного генератора (в отечественной литературе называемая методом вычетов) имеет вид
z0 =1; zi+1 = zi 52p+1 (mod 2В), xi+1 = zi+12В,
где р = max{q | 52q+1 < 2В}.
Каждый студент должен разработать свой датчик случайных чисел, а также программу, генерирующую достаточно длинную последовательность из N случайных чисел и проверяющую эту последовательность с помощью различных статистических тестов (проанализировать смысл параметра B в приведенных методах).
Применить три группы статистических тестов.
1. Рассматривая x1, x2, …, xN как выборку значений случайной величины х, рассчитать выборочные значения моментов для распределения x и сравнить эти выборочные значения с теоретическими, соответствующими равномерному распределению (рассмотреть матожидание, дисперсию, асимметрию и эксцесс).
2. Аналогично с помощью критерия 2 Пирсона проверить гипотезу о том, что выборка x1, x2, …, xN соответствует равномерному распределению х в интервале [0,1].
3. Рассматривая последовательность x1, x2, …, xN как временной ряд с дискретным временем t = 1,2,…, исследовать его на стационарность, рассчитав и проанализировав автокорреляционную функцию (см., например, [4], с. 503).
4. Полагая, что неслучайная составляющая временного ряда f(t) = 0,5, перейти к ряду значений возмущения:
1, 2, …, N, где i = xi 0,5. (*)
Для ряда (*) с помощью критерия Дарбина-Уотсона проверить гипотезу об отсутствии автокорреляции между соседними значениями ряда (теорию этого критерия взять в книге [4], с. 511).
Оценить зависимость получаемых оценок от длины N последовательности.