6.3. Техника статистического моделирования наблюдений, подчиняющихся заданному распределению
6.3.1. Получение равномерно распределенных на отрезке [0, 1] случайных чисел.
Для получения в ЭВМ случайных чисел можно использовать два метода: «физический», когда с ЭВМ соединяется тот или иной «физический» датчик случайных чисел (например, счетчик числа
-частиц, вылетающих из некоторого радиоактивного источника за фиксированный промежуток времени), и математический, когда в ЭВМ с помощью стандартных машинных команд генерируется регулярная последовательность чисел,
ляющаяся для внешнего наблюдателя случайной и удовлетворяющая основным неравенствам, которым должны удовлетворять настоящие случайные числа. Эту последовательность часто называют последовательностью псевдослучайных чисел. В настоящее время чаще используется математический метод. Для этого есть несколько причин. Прежде всего в статистическом моделировании важно иметь возможность воспроизвести последовательности случайных чисел, чтобы, например, посмотреть, как на тех же данных будет работать другой метод статистической обработки. Далее, трудно гарантировать постоянную удовлетворительную работу физических датчиков. И наконец, в настоящее время найдены и проверены простые и вместе с тем надежные математические датчики.
Для получения последовательности псевдослучайных чисел
чаще других применяется метод вычетов (мультипликативный датчик):
где
— специально подобранные целые постоянные. Фиксация начального значения «0 однозначно определяет последовательность Поскольку число различных значений
не превосходит числа различных вычетов по модулю
последовательность имеет период
Период, вообще говоря, зависит от значения
Формулу (6.30) можно представить в виде
где
означает дробную часть числа V.
Формула (6.31) дает возможность четче представить характер зависимости между g. Для этого разложим
в бесконечную дробь по степеням
что может быть представлено в виде
где каждое из
может принимать значения от 0 до
. Из формулы (6.31) тогда следует, что
, т. е. операция получения
состоит в перенесении в
запятой на
позиций вправо и в отбрасывании целой части, равной
На практике хорошо себя зарекомендовали следующие значения
и М:
Проверка последовательности псевдослучайных чисел обычно сводится к тому, что для
, где К порядка нескольких десятков, проверяется, насколько равномерно при
заполняют единичный
-мерный куб
-мерные векторы
Результаты проверки датчика для БЭСМ-6 можно найти в [34]. Наиболее систематически и полно математические вопросы, связанные с построением датчиков псевдослучайных чисел, освещаются во втором томе монографии Кнута [42]. Там же описывается прием, как, используя два «независимых» датчика, имеющих периоды
получить датчик с периодом порядка
. Этот прием может быть полезен при получении псевдослучайных чисел на ЭВМ с короткими словами.
В дальнейшем при описании способов получения случайных величин используется алгоритмический язык Фортран и предполагается, что в основной программе описан датчик псевдослучайных чисел, обращение к которому осуществляет оператор CALL RAND (R), где R — имя псевдослучайного числа. Подпрограмма RAND (R) на основании заложенного в ней алгоритма по числу, стоящему в ячейке R, вычисляет следующее за ним псевдослучайное число и помещает его в ту же ячейку.