ГОСТ Р ИСО 28640 - 2012
Таблица В.1 - Наборы параметров для использования линейного конгруэнтного метода
Померстроки
1
2
3
4
5
6
АСм
I 664 525
*
2>3
1566083 941 0
2з:
48 828 125 0
2з:
2 100005 341 0
2 м - 1
397 204 094 0 251 - ]
314 159 3690
2м - ]
П римечание 1- Символ * указывает, что может быть использовано любое нечетное число.
Примечай ис 2 - Использование параметров, приведенных в первой строке, обеспечивает генерацию
целых чисел из интервала от 0 до (2J;- 1).
П римечание 3 - Использование параметров, приведенных во второй или третьей строках, обеспечивает
генерациючисел вида (4/+ 1)для/ = 0, 1, ...,(2Л- 1), или (4/ + 3) для i= 0, 1,...,(2W- 1) взависимости от
начального числаЛ",,.
П римечание 4 - Использование параметров, приведенных встроках 4, 5 и6, обеспечивает генерацию
положительных целых чисел из интервала от 1до (21;- 2).
П римечание 5 - Следует использовать более высокие разряды генерированных случайных чисел, а
низкие разряды нс следует использовать,_________________________________________________________________
В.5.2 Текст программы для линейного конгруэнтного метода
В.5.2.1 Общие положения
Ниже приведен текст программы для линейного конгруэнтного метода на языке Си.
Программа соответствует ИСО/МЭК 9899. Приведено два варианта программы, один - для
случая, когда ш = 232, другой - для случая, когда т = (2й - 1). Эти варианты соответствуют
рекомендациям В.5.1.
В.5.2.2 Вариантт = 232
При каждом обращении функция lcong32 () формирует случайное целое число от нуля до
(2Л‘ - Г) включительно. Результат имеет тип «длинного целого числа без знака». При каждом
обращении функция lcong32_31() формирует случайное целое число от нуля до (2й - 1)
включительно. Результат имеет тип «длинного целого числа». Функция инициализации
init_Icong32 (использующая длинное начальное целое без знака) выполняет инициализацию так,
чтобы неотрицательное целое число типа «длинное целое без знака», было установлено как
начальное число. Если второе слагаемое с = 0 и исходное начальное число Ха является
нечетным, то Ха может быть установлено как Ха = X». Однако, если задано четное исходное
начальное число Хо*, в случае с = 0 для получения начального числа Xо к исходному
начальному числу прибавляют единицу Ха -Ха+ 1. Вдругих случаях используют в качестве Ха
начальное число mod(Xo*; /и).
Множитель и второе слагаемое изменяются при изменении значений MULTIPLIER и
INCREMENT в каждой программе. Последовательность случайных чисел перезапускается при
использовании выхода lcong32 () в качестве аргумента функции инициализации init_lcong32
(начальное число).
36