ГО С Т Р ИСО 24153— 2012
В.4 Функция генерации случайных чисел
Если необходим ручной ввод начального числа (для проверки, аудита и т. п.) (см. 7.1.3). данную функцию не
вызывают.
double U(void)
{
/* В. 1.4 функция генерации случайного числа V
ini j. к. И:
static long k1. Shuffle{32):
if (Seed < 0) Seed += ml:
if (j <= 31) Shuffle[jl = Seed;
j=0:
k1 = Shuffle[0);
Г
if (Seed < 0) Seed += ml;
к = Seed2 /q2:
Seed2 = a2 *(Seed2 - к *q2) - к *r2;
if (Seed2 < 0) Seed2 += m2;
И = floor(32.0 *k1 /ml);
k1 = Shuffle[i1) - Seed2:
Shuffle[i1] = Seed;
if (k1 < 1) kl += mm1;
return (kl’ufac):
}
генератор комбинированного случайного числа (CRNG) (см. 7.3.6) V
k= Seed >’q1;
Г
RNG #1; вход из 7.3.4 см. 7.3.6 a)
Seed = а1 •(Seed - к *q1) - к *rl;
Г
RNG #1 см. 7.3.6 a)
/*RNG #1 см. 7.3.6 a)
Г
RNG #2; вход из 7.2.5 см. 7.3.6 b)
Г
RNG #1 см. 7.3.6 Ь)
Г
RNG #1 см. 7.3.6 Ь)
Г
вычисление индекса массива см. 7.3.6 с)
Г
нешкалированные выходные данные см. 7.3.6 d)
/’ измененный массив перестановок см. 7.3.6 е)
Г
нешкалированные выходные данные см. 7.3.6 О
/*действительное число из интервала (0;1) см. 7.3.8
if (q < 0) {
Г
создание массива в соответствии с 7.3.1 а)V
for (j = 39; j >= 0; j- -) {/’заполнение массива перестановок в соответствии с 7.3.4 V
k = Seed / q1;
Г
RNG #1 см. 7.3.3 Ь) V
Seed = а1 ■(Seed - к *q1) - к *г1;
Г
RNG #1 см. 7.3.3 с) V
/*RNG #1
cm
.7.3.3 d)•/
/*
cm
. 7.3.4 V
/* последнее значение начального числа, вход в 7.3.6 а)V
/’ дальнейшая инициализация невозможна V
Г
вход в 7.3.6 с) V
21