ГО С Т Р ИСО 24153— 2012
7.1.2 В алгоритмах использованы два основных элемента:
a) алгоритм инициализации, генерирующий квазислучайное начальное целое число на основе време
ни. прошедшего с указанной даты;
b
) генератор случайных чисел.
7.1.3 При использовании для верификации или аудита алгоритм инициализации, упомянутый в 7.1.2
а) и описанный в 7.2. может быть заменен введением начального значения вручную. Это значение должно
быть целым числом из интервала от 1до 2 147 483 398 включительно. Это значение необходимо сохранять и
указывать в отчете (при составлении). Однако при использовании для контроля качества и при планиро
вании эксперимента должна быть предусмотрена возможность не использовать компьютерный выбор на
чального значения, который может быть выбран по умолчанию.
П р и м е ч а н и е — Этапы алгоритмов приведены в более формализованном виде, что может быть полезно
при программировании методов. Текст программы со ссылками на подразделы настоящего стандарта приведен
в приложении В.
7.2 Алгоритм инициализации
7.2.1 Алгоритм инициализации включает:
a) алгоритм вычисления времени, прошедшего с указанной даты:
b
) алгоритм генерации случайных чисел на основе равномерного распределения, использующий
случайное число, полученное на этапе а).
7.2.2 Приведенный алгоритм позволяет определить количество секунд с 2000-01-01 00:00:00 до теку
щих даты и времени.
Описание алгоритма.
a) Определяют системные дату и время компьютера в виде символьной переменной, сохраняют
значение этой переменной и указывают в отчете, а затем анализируют переменную по компонентам (год.
месяц, день. час. минута, секунда).
b
) Вычисляют количество полных дней
da,
начиная с указанной даты, используя для текущей даты
числовые значения года у (с четырьмя цифрами), месяца
т .
и дня
d.
обработанные следующим образом:
если т , < 3, то т , = т , ♦ 12. у = у - 1,
da
=
d
♦ 1(15 3 т, - 457V5J ♦ 365у + Ly/4j -Ly/100j + Ly/400J - 730 426.
П р и м е ч а н и е — Формула для
de
гложет быть упрощена для календарных лет до 2099 года включительно
заменой членов после LyMj на <к-730 441».
c) Вычисляют общее количество секунд s0, начиная с указанной даты, используя расчеты в соответ
ствии с Ь) и время дня (в 24-часовом формате «hh:mm:ss»). указанное в символьной переменной в соот
ветствии с а) на основе формулы
s0 = 86400do + 3600/? ♦ 60m2♦ s,
где
h.
m2и s — часы, минуты и секунды соответственно.
П р и м е ч а н и е 1— В некоторых языках программирования есть встроенные функции для вычисления s0
непосредственно. Перед использованием такие встроенные функции должны быть проверены для обеспечения
учета влияния високосных лет. летнего/зимнего времени (в зависимости от обстоятельств).
П р и м е ч а н и е 2 — В 32-битовой реализации этого алгоритма значение sc увеличивается до переполне
ния соответствующей ячейки. В программе необходимо предусмотреть проверки того, что это число находится в
интервале от 1до 2 147 483 398 включительно.
d) Значение, полученное в соответствии с с), является начальным числом для генератора начально
го числа и используется для получения заключительного начального числа. Это значение хранят в виде
отдельной переменной и указывают в отчете.
e) Количество
j
обращений к генератору случайных чисел является случайным целым от 1 до 100.
полученным на основе двух наименее существенных цифр значения, полученного в соответствии с пере
числением с), увеличенного на 1, и может быть рассчитано по формуле
y*s„-100Lse/100j+1.
7.2.3 Алгоритм генерации начального числа (функция инициализации) представляет собой линейное
конгруэнтное рекуррентное отношение.
7