ГОСТРИСО 28640 - 2012
Принеобходимостимногократногополучениянаборовслучайныхчиселдля
моделирования инициализацию init_gfsr5 (s) необходимо выполнить один раз перед началом
моделирования. После каждого повторения содержание таблицы x|PJ размера Р и переменную
state_i необходимо сохранять и использовать их в качестве начальных значений при следующем
повторении.
Если необходима другая последовательность с другим периодом, то значения />. qi, q>и
</знеобходимо выбирать из таблицы 1.
/*4 *4 *4 0 4 »4 4 4 4*4 *4 а 4 в 4 4 »4 4 -»*««4 4 4 а «‘4 «4 * 4 а 4 в «4 » «4 *4 «44444В «4 *4 9 4 » « * 4 4*4*44’4В4444/
Текст программы пятипарамстрпчсского GPSR на языке Си
/ 4 * 4 4 < 4 4 « 4 4 4 4 4 4 « > 4 * 4 « 4 4 4 4 4 4 * 4 4 4 4 4 4 4 4 4 a 4 a 4 * 4 4 4 4 s 4 * 4 4 4 4 « 4 4 4 4 < 4 4 * 4 4 < 4 4 4 4 a 4 4 4 4 < 4 4 4 4 «4 «4 4 /
«define Р 521
/• QI < Q2 < Q3 «7
«define Q1 86
«define Q2 197
«define Q3 447
«define W 32
/• W должно быть степенью 2 ♦/
Static unsigned long state |P) :\
Static int stalc_i ;
void init_gfsr5 (unsigned long s)
1
int i. j, k ;
static unsigned long x JP| ;
s &= OxffffffffUL ;
for <i=() : i<P ; i++) |
x (i) = s » 3 1 :
s = I664525UL * s + IUL :
s &= OxffffffffUL :
for (k=0. i=0 : i<P ; i++) {
state |i| = OUL :
for (j=0 ;j<W ; j++) |
state [i] <<= 1 ;
state [i| 1= x |k| ;
x |k] A=x ( <k+Ql) %P| Лх | (k+Q2) %P| лх ( (k+Q3) %P| :
k++:
if (k==P) k = 0 :
1
statc_i = 0 ;
I
unsigned long gfsrS (void)
23