Статус документа
Статус документа

ГОСТ Р ИСО 28640-2012 Статистические методы. Генерация случайных чисел (Переиздание)

Приложение В
(справочное)

     
Алгоритмы генерации псевдослучайных чисел

В.1 Текст программы трехпараметрического метода GFSR

Ниже приведен текст программы на языке Си, которая в соответствии с ИСО/МЭК 9899 является примером метода GFSR с параметрами (, , ) = (1279, 418, 32) и периодом (2-1). При обращении к функции gfsr () происходит генерация целого числа из интервала от 0 до (2-1) включительно. При обращении к функции gfsr_31 () происходит генерация целого числа из интервала от 0 до (2-1) включительно. Для обращения к функциям gfsr () и gfsr_31 () необходима единственная инициализация init_gfsr (s). Функция init_gfsr (s) выполняет инициализацию при условии, что в качестве начального числа используется 32-битовое целое число без знака [целое число из интервала от 0 до (2-1)]. Полученная последовательность обеспечивает 39 независимых серий псевдослучайных чисел, каждая из которых обладает незначительной автокорреляцией, имеет 39-мерное распределение (однородно распределена в 39-мерном гиперкубе) с 32-битовой точностью, и ее функция автокорреляции такова, что значения, близкие к нулю, появляются через 2 чисел.

Чтобы получить другую последовательность псевдослучайных чисел, необходимо изменить начальное число в функции init_gfsr (s). В программе могут быть изменены только константы , , . Значение должно быть равно 2 в целой степени в соответствии с длиной слова машины. Значение в общем случае равно 32 или 64 в зависимости от возможностей машины. Например, если длина слова машины 64, постоянную в программе устанавливают равной 64, а функция gfsr () генерирует целые числа из интервала от 0 до (2-1) включительно, в то время как функция gfsr_31 () генерирует целые числа из интервала от 0 до (2-1) включительно.

В данной программе предполагается, что длина "беззнакового длинного целого" составляет не меньше 32 бит.

Примечание - Соответствующий текст программы трехпараметрического GFSR на языке BASIC приведен для информации.

В.2 Текст программы пятипараметрического метода GFSR

Параметры и период данной программы составляют (521, 86, 197, 447, 32) и (2-1). При обращении соответственно к функции gfsr5 () происходит генерация целого числа из интервала от 0 до (2-1) включительно. При обращении к функции gfsr5_31 () происходит генерация целого числа из интервала от 0 до (2-1) включительно. Функция init_gfsr5 (s) выполняет инициализацию при условии, что начальное число является 32-битовым целым числом без знака [целое число из интервала от 0 до (2-1)]. До обращения к функции gfsr5 () и gfsr5_31 () необходимо выполнить первоначальную инициацию init_gfsr5 (s). Полученная последовательность имеет 16-мерное распределение (равномерное распределение в 16-мерном гиперкубе) с 32-битовой точностью, а ее функция автокорреляции такова, что период появления близкого к нулю значения составляет 2.

При необходимости многократного получения наборов случайных чисел для моделирования инициализацию init_gfsr5 (s) необходимо выполнить один раз перед началом моделирования. После каждого повторения содержание таблицы х[Р] размера Р и переменную state_i необходимо сохранять и использовать их в качестве начальных значений при следующем повторении.

Если необходима другая последовательность с другим периодом, то значения , , и необходимо выбирать из таблицы 1.