65
результатов. Рекомендуется использовать средства тестирования согласно [30]. В С.3.3 приведена процедура генерирования псевдослучайных чисел для равномерного распределения, которая успешно прошла указанное тестирование и проста в применении.
С.3.1.3 Параметры процедуры генерирования псевдослучайных чисел, соответствующих равномерному распределению R(0,1), — входной, выходной, а также являющийся одновременно входным и выходным, — определены в таблице С.1.
П р и м е ч а н и е 1 — При задании одного и того же начального числа результатом может быть генерирование одной и той же последовательности случайных чисел. Этот факт является важным элементом регрессионного тестирования, используемого для определения согласованности результатов, полученных программным средством, с результатами предыдущих версий.
П р и м е ч а н и е 2 — Некоторые генераторы псевдослучайных чисел при каждом обращении выдают одно случайное, а некоторые — последовательность значений.
Т а б л и ц а С.1 — Процедура генерирования псевдослучайных чисел для стандартного равномерного распределения
Входнойпараметр
q — число значений в генерируемой последовательности
Входной/выходной параметр
t — вектор-столбец, элементы которого могут изменяться в ходе выполнения процедуры. Пользователю обычно нет необходимости знать, как изменяются значения этого параметра, но он помогает контролировать выполнение процедуры генерирования случайных чисел. Эти параметры могут быть реализованы как глобальные переменные и не входить явно в формальные параметры процедуры. Один или несколько элементов t определяет начальное число, используемое при следующем обращении к процедуре.
Выходной параметр
z — вектор-столбец q значений, составляющих выборку из R(0,1)
C.3.1.4 Псевдослучайное число x выборки из R(a, b) определяют преобразованием x = a + (b - a)z, где z — элемент выборки из R(0,1).
C.3.2 Проверка качества случайной выборки
С.3.2.1 Каждый генератор псевдослучайных чисел должен:
- обладать хорошими статистическими свойствами;
- предусматривать возможность реализации на любом языке программирования;
- давать одни и те же результаты для одного и того же начального числа на любом компьютере.
Желательно также, чтобы он был компактным, т. е. простым при реализации. Одним из таких генераторов,
близко приближающихся к удовлетворению перечисленных требований, является генератор Вихманна-Хилла [52, 53]. Он использовался во многих приложениях, включая вычисление неопределенности. Однако длина его цикла (количество генерируемых псевдослучайных чисел до их повторения) составляет 231, что сегодня считается для некоторых задач недостаточным. Более того, при его тестировании не по всем критериям были получены положительные результаты [35]. Наконец, этот генератор был разработан для 16-разрядных компьютеров, тогда как сегодня повсеместно используются 32-разрядные и 64-разрядные компьютеры.
П р и м е ч а н и е — Период последовательности значений, полученных с помощью генератора псевдослучайных чисел, — это количество последовательных псевдослучайных чисел до их повторения.
С.3.2.2 Для комплексной проверки статистических свойств генератор тестируют пакетом программ TestU01 [30]. Этот программный продукт весьма детализирован и включает в себя большое количество статистических тестов, в том числе расширенный пакет краш-тестирования BigCrush. Некоторые генераторы, успешно выдержавшие это тестирование, приведены в списке, составленном Вихманном и Хиллом [54]. В их число входит и усовершенствованный генератор Вихманна-Хилла (см. С.3.3), обладающий следующими свойствами [54]:
- его просто реализовать на любом языке программирования, он не зависит от побитовых операций, используемых в некоторых генераторах;
- структура генератора (количество информации, сохраняемой генератором между запросами) невелика и легка в обращении (сравни с параметром t в таблице С.1);
- он позволяет легко получить несколько последовательностей, необходимых для высокопараллельных приложений, что, вероятно, будет особенностью вычислений неопределенности в будущем;
- существуют варианты генератора для 32-разрядных и 64-разрядных компьютеров.
С.3.3 Процедура генерирования выборки псевдослучайных чисел из равномерного распределения
С.3.3.1 Как и его предшественник, улучшенный генератор Вихманна-Хилла представляет собой комбинацию конгруэнтных генераторов. Новый генератор сочетает в себе четыре таких