ГОСТ Р ИСО 28640 - 2012
КММ
/44e4*44e4»4«’44o4»444*44‘»444*4«4e4*44e4s44<4«-«4«4*’44o4»444444‘»444*a4»444«-»4i>4«-4«>4/
FUNCTION gfsr
DECLARM NUMERIC 1
IF statc.i >= F THEN
LET sialc_i = 0
LET pO = 0
LET pi = Ql
FOR i=() TO P-Q-l
unsigned long gfsr(void){
int i;
DECLARE NUMERICpO.plunsigned long *p0. *p I:
if (statcj >= P) |
state, i = 0;
pO = state:
pi = state + Q 1:
for <i=0: i«P-Q ); i++)
*p0++ л= *pl++:
LET state(pO) = Xor32( state! p!)> state! pi))
LET pO = pO + 1
LET pi = PI + I
NEXT i
LET pi = 0!
pi = state;
FOR i=i TO P-l!
for !: i<P; i++)
*p0++ л= 4pl++;
LET statc(pO) = Xor32(statc(pO) . state(pl))
LET pO = p!) + 1
LET pi = PI + I•
NEXT i
END IF
LET gfsr = statc(statc_i)
LET statc_i = statc_i + 1
END FUNCTION
J
return statc{state_i++):
REM
/4«44*»44»44*44444«44*a4*»4*’444»44444044*44*444444»4«44*e4«>444444»44*44»44*44«-44/
REM t* (
W
-
I
)
-
6
m
t o
b
o c
целое
•/
END FUNCTION
FUNCTION gfsr_31llong gfsr_3l(void)(
LET gfsr_31 = SR32U(gfsr . 1)!return (long)(gfsr()»l);
B.2 Текст программы пятипараметрического метода GFSR
Параметры н период данной программы составляют (521. 86, 197, 447, 32) и (25*1- 1).
При обращении соответственно к функции gfsr5() происходит генерация целого числа из
интервала от 0 до (2м - 1) включительно. При обращении к функции gfsr5_31() происходит
генерация целого числа из интервала от 0 до (2л - 1) включительно. Функция init_gfsr5 (s)
выполняет инициализацию при условии, что начальное число является 32-битовым целым
числом без знака [целое число из интервала от 0 до (2?‘ - 1)). До обращения к функции gfsr5 () и
gfsr5_31 0 необходимо выполнить первоначальную инициацию init_gfsr5 (s). Полученная
последовательность имеет 16-мерное распределение (равномерное распределение в 16-мерном
гиперкубе) с 32-бнтовой точностью, а ее функция автокорреляции такова, что период
появления близкого к пулю значения составляет 2м4.