ГОСТРИСО 28640 - 2012
LET gfsr5 = statc(statc_i)
!return statclstate_i++J;
!J
LET statc_i = statc_i + 1
END FUNCTION
REM
f 4 4 » 4 4 » 4 4 4 4 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 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 4 4 4 4 4 4 4 4 4 4 4/
REM
t*
(W-1)-6
htoboc
целое
•/
FUNCTION gt’sr5_31.’long gfsr5_3l(void) {
LET gfsr5_3I = SR32U(gfsr5 ,1 )
END FUNCTION
!return (long)(gfsr5()»I):
!J
B.3 Текст программы комбнннрованиого метода Таусворта
Ниже приведен текст программы комбинированного метода Таусворта на втыке Си.
генерирующего целые числа из интервала от 0 до (2м - 1) включительно, на основе комбинации
трех последовательностей параметров Таусворта (31, 13, 12), (29, 2. 4) и (28, 3, 17).
Инициализация init_taus88 (s) происходит при условии, что начальное число s является
32-битовым целым числом без знака (целое число из интервала от 0 до (232- 1) включительно].
Для получения другой последовательности псевдослучайных чисел необходимо изменить
начальное число s. Перед обращением к taus88_31 ( ) необходимо один раз выполнить
инициализацию init_taus88 (.?). Инициализация может быть выполнена без использования
функции init_taus88 (s) с помощью выбора подходящих значений s,,иОднако для
инициализации должны быть выполнены следующие три условия:
- хотя бы один разряд из высших 31 разряда лз равен единице;
- хотя бы один разряд из высших 29 разрядов s2равен единице;
- хотя бы один разряд из высших 28 разрядов .у»равен единице.
Поскольку са.мый низший разряд si, три низших разряда .ъ и четыре низших разряда sj
проигнорированы, полученная последовательность случайных чисел не зависит от изменений в
этих разрядах. В данной программе предполагается, что длина «беззнакового длинного целого
числа» составляет 32 бита (разряда).
f 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 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 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 /
Текст программы комбинированного метода Таусворта на языке Си
/ 4 9 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 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 4 4 * 4 4 4 ¥ 4 4 4 4 4 4 4 4 4 /
static unsigned long si, s2, s3, b ;
void init_taus88 (unsigned long s)
I
int i :
27