2
ГОСТРИСО 28640 - 2012
Выбор трех параметров (р, </, t) позволяет получить лучшее многомерное равномерное
распределение последовательности псевдослучайных чисел после операции объединения.
Значения параметров необходимо сохранять. Чтобы получить другую последовательность
псевдослучайных чисел, необходимо изменить начальное число.
Если необходимо получить независимый набор случайных чисел для каждого
повторения моделирования, функцию инициализации init_taus88 (s) необходимо вызвать один
раз в начале моделирования. После каждого повторения значения s5,
.12
и s» необходимо
сохранять и присваивать переменным .Vi, S и лм соответственно, как начальные значения при
следующем повторении.
П римечание - Соответствующий текст программы метода Таусворта на языке BASIC приведен для
информации.
КЕМ •*»**•********•*•**•*****•********•****•*•****•********•****•*•****•*****/
КЕМ Текст программы для метода Таусворта на языке BASIC
КЕМ •***********•**********************•**********************•**************/
OPTION BASE О
КЕМ
f*u********************************9*9 ******
DECLARE NUMERIC I
DIM x(3)
FOR
1
= 0 TO 2
IF And32(s . MskF_0>
0
0 THEN
LET x(i) = s
END IF
LET s = Mul32U( 1664525. s) + I
NEXT I
LET s 1 = x(0)
LET s2 = x( l)
END FUNCTION
REM
FUNCTION taus88_3 1
FUNCTION init_taus88(s)!void init_taus88(unsigncd long s) {
!int i:
!unsigned long x[3J;
i=0; while (i<3) (
!if (s &OxfffffffOUL) (
!x|il = s; i++;
!I
!s = I664525UL * s +1UL;
!\
LET s3 = x(2)!si = x[0|:s2 = x[ 11; s3 = x(2];
!>
+
9
+*******#** +¥**’$+**+W#********* *4f
Mong taus88_int(void)
KE.V1 /***** 31-битовое целое »*+•*!
LET b = SR32U(Xor32(SL32U(sl, 13). si). 19!b = (((si «13) Лsi) »19);
LET si = Xor32(SL32U(And32(sl . MslcF_c).!si = (((si &4294967294) «12) A b);
12). b)
LET b = SR32U(Xor32(SL32U(s2. 2). s2). 25)!b = (C(s2 « 2) As2) » 25);
LET s2 = Xor32(SL32U(And32(s2 , MskF_8).!s2 = (((s2 *4294967288) « 4) л b);
4), b)
29