ГОСТ Р ИСО 28640 - 2012
unsigned long х (31 ;
i=0 ;
while (i<3) {
if (s & OxfffffffOUL) (
x |i| = s ;
i++:
s = 1664525UL * s + IUL:
si = x |0J ; s2 = x [ 1j ; s3 = x (2| ;
}
/* 31-битовое целое •/
long taus88_31 (void)
1
b = (((si «13) A si) »19) :
si = (((si & 4294967294UL) «12) Ab) ;
b = (((s2 « 2) Лs2) » 25):
s2 = (((s2 & 4294967288UL) « 4) ЛЬ) :
b = (((s3 « 3) л s3) »II);
s3 = (((s3 & 4294967280UL) « 1 7 ) Ab) ;
return (long)
((si A s2 л s3) >>1
) :
1
В этой программе операторы
b = (((si «13) A si) »19).
si = (((si & 4294967294UL) «12) Ab)
генерирую т числа в последовательности Т аусворта с параметрами (31, 13, 12)
в Sit а операторы
b = (((s2 « 2) Лs2) » 25).
s2
= (((
s2 & 4294967288UL)
«
4)
Ab)
и
b = (((s3 « 3) As3) »11);
s3 = (((s3 & 4294967280UL) «17) Ab)
генерируют числа последовательности Таусворта с параметрами (29, 2, 4) и (28, 3, 17). ,ч2 и .г.»
соответственно. Три двоичных целых числа (у?, г/. /) объединяют с помощью побитовой
операции «исключающее ИЛИ» и 31-битовая последовательность псевдослучайного числа
получена.
28