ГОСТ Р ИСО 28640 - 2012
у л= (у «15) & Oxefc60000UL ;
У А= (У »18) :
return у ;
1
long gcnrand_3l (void)
/* генерация случайного числа из
интервала [0. 0x7fffffff] ♦/
I
return (long) (gcnrand( ) » 1 ) ;
)
Примечание - Соответствующий текст программы метода Мсрсснна Твистсра на языке
BASIC приведен для информации
КкМ /*•»+*•++•+****+»*•*’-»*»+»+**+*+"+«*+»*’*+*+*•*»+**+»+»*/
REM Текст программы для метода Мсрсснна Твистсра на языке BASIC
OPTION BASE 0
REM
REM /* Параметры периода */
DECLARE NUMERIC P
LET P = 624
DECLARE NUMERIC Q
LET Q = 397
DECLARE NUMERIC MATRIX..A
LET MATRIX..A = ВVAL("9908bOdГ . 16)
DECLARE NUMERIC L’PPER_MASK
DECLARE NUMERIC LOWER_MASK
LET mti = P + I
REM
/ 4 4 4 * 4 4 » 4 » 4 4 4 4 m 4 4 4 * 4 4 4 4 4 4 * 4 4 4 4 * 4 4 4 4 9 4 4 4 4 4
!#dcfinc P 624
!#dcfine Q 397
!#dcfinc MATRIX.A 0x9908b0dfUL
/* постоянный вектор a*■/
LET UPPER_MASK = ВVAL(’80000000’ . 16) !#dcfinc UPPER..MASK 0x80000000UL
/* наиболее значимые w-г бит*1
LET LOWER_MASK = ВVAL(’7fffn’fl"’ . 16) !#dcfinc LOWER_MASK 0x7fffffffUL
/* последние значимые г бит*/
DIM mt(P)!static unsigned long mt|P);
/*массив состояния вектора*!
DECLARE NUMERIC mti
!static int mti=P+ I;
/* mti==P+l означает, что mt{P) нс
инициализирован */
»
4 4 4 * 4 4 4 4 9 4 4 4 ¥ 4 4 4 4 M 4 4 4 4 » 4 4 4 ¥ 4 4 4 4 4 4 4 4 4 4 /
32