66
генератора, тогда как предыдущая версия сочетала три. Новый генератор имеет период 2121, приемлемый для любого возможного применения.
С.3.3.2 В таблице С.2 приведено описание улучшенного генератора Вихманна-Хилла для получения псевдослучайных чисел из R(0,1) для 32-разрядного компьютера.
С.3.3.3 Для 64-разрядных компьютеров шаг а) вычисления, включая (i) и (ii), в таблице С.2 должен быть заменен более простым шагом:
«а) Для j = 1, ..., 4 вычисляют ij = (a;- х ij ) mod oj».
С.4 Нормальное распределение
Процедура, описанная в таблице С.3, обеспечивает выбор случайных значений из стандартного нормального распределения N(0,1) с использованием преобразования Бокса-Мюллера [3]. Случайное значение x из нормального распределения N(p, о2) вычисляют по формуле x = д + oz, где z — случайное значение из N(0,1).
С.5 Многомерное нормальное распределение
С.5.1 Из всех многомерных распределений наибольший интерес представляет совместное нормальное распределение N(m, V), где м — вектор математического ожидания размерности n ■ 1, а V — ковариационная матрица размерности n ■ n.
C.5.2 Значения случайной величины из N(m, V) [45, 49] могут быть получены путем использования процедуры, описанной в таблице С.4.
Т а б л и ц а С.2 — Улучшенный генератор Вихманна-Хилла для псевдослучайных чисел из равномерного распределения на интервале (0,1) для 32-разрядного компьютера
Входной параметр
Нет
Входные/выходные параметры
- Целочисленные параметры, которые требуются в качестве входных величин и изменяются в процессе
- выполнения процедуры. Перед первым обращением к процедуре им присваивают значения от 1 до
- 2 147 483 647. Между обращениями значения параметров остаются неизменными. Пользователю
- обычно нет необходимости знать, как изменяются значения этих параметров, используемых в процедуре генерирования псевдослучайных чисел. Данные параметры могут быть реализованы как глобальные переменные и не входить явно в формальные параметры процедуры.
Константы
- Четырехмерные векторы с целочисленными координатами, т. е. a = (a1, a2, a3, a4)T и т. д., такие, что:
b,
- aT = (11 600, 47 003, 23 000, 33 000),
d bT = (185 125, 45 688, 93 368, 65 075),
cT = (10 379, 10 479, 19 423, 8 123),
dT = 2147483123 x (1, 1, 1, 1) + (456, 420, 300, 0).
Между обращениями значения констант остаются неизменными.
Выходной параметр
r Псевдослучайное число из R(0,1).
Алгоритм вычисления 1 2
1Для j = 1, ..., 4:
Вычисляют ij = ay (ij mod by ) - Cj [ij /by],
2 Если ij < 0, то заменяют ij на ij + dj ;
Вычисляют w = =1 ij/dj;
Вычисляют r = w - [w].
П р и м е ч а н и е — [w] означает наибольшее целое, не превосходящее w. Запись ij mod bj означает остаток от деления ij на bj