1prng.h(3) Library Functions Manual prng.h(3)
2
3
4
6 prng.h - Генераторы псевдослучайных чисел
7
8
10 #include 'bee2/defs.h'
11
12
13 Функции
14 size_t prngCOMBO_keep ()
15 Длина состояния функций COMBO.
16 void prngCOMBOStart (void *state, u32 seed)
17 Инициализация генератора COMBO.
18 void prngCOMBOStepR (void *buf, size_t count, void *state)
19 Генератор COMBO.
20 size_t prngEcho_keep ()
21 Длина состояния эхо-генератора
22 void prngEchoStart (void *state, const void *seed, size_t seed_len)
23 Инициализация эхо-генератора
24 void prngEchoStepR (void *buf, size_t count, void *state)
25 Эхо-генерация
26 size_t prngSTB_keep ()
27 Длина состояния генератора СТБ
28 void prngSTBStart (void *state, const u16 z[31])
29 Инициализация генератора СТБ
30 void prngSTBStepR (void *buf, size_t count, void *state)
31 Использование генератора СТБ
32
35 Генератор COMBO разработан Дж. Марсалья (George Marsaglia, см.
36 http://www.stat.fsu.edu/pub/diehard/cdrom/pscript/keynote.ps).
37 Генератор проходит все тесты батареи DIEHARD, период последовательности
38 его состояний имеет порядок 2^60.
39
40 Работа с генератором COMBO состоит в однократном вызове функции
41 prngCOMBOStart() и последующих многократных вызовах prngCOMBOStepR().
42 Состояние автомата состоит из prngCOMBO_keep() октетов и
43 интерпретируется как общий стек указанных функций. Состояние не должно
44 изменяться между обращениями к функциям.
45
47 Эхо-генератор повторяет буфер данных, переданный при инициализации.
48 Эхо-генератор удобно использовать при тестировании для передачи
49 фиксированных данных через интерфейс prng_i.
50
52 Генератор определен в СТБ 1176.2-99 (п. 7.2.2). Выходные
53 последовательности генератора используются при построении простых
54 чисел.
55
57 size_t prngCOMBO_keep ()
58 Возвращается длина состояния функций, реализующих генератор COMBO.
59
60 Возвращает
61 Глубина стека.
62
63 void prngCOMBOStart (void * state, u32 seed)
64 Состояние state генератора COMBO инициализируется на основании числа
65 seed.
66
67 Предусловие
68 По адресу state зарезервировано prngCOMBO_keep() октетов памяти.
69
70 Аргументы
71 state состояние COMBO
72 seed инициализирующее значение
73
74 void prngCOMBOStepR (void * buf, size_t count, void * state)
75 В буфер [count]buf записываются псевдослучайные октеты, построенные с
76 помощью генератора COMBO с состоянием state. Состояние state изменяется
77 при генерации.
78
79 Ожидается
80 prngCOMBOStart() < prngCOMBOStepR()*.
81
82 Прим.
83 Поддержан интерфейс gen_i (defs.h).
84
85 Аргументы
86 buf буфер
87 count размер буфера (в октетах)
88 state состояние COMBO
89
90 size_t prngEcho_keep ()
91 Возвращается длина состояния функций, реализующих эхо-генератор.
92
93 Возвращает
94 Длина состояния.
95
96 void prngEchoStart (void * state, const void * seed, size_t seed_len)
97 Состояние state эхо-генератора инициализируется на основании буфера
98 [seed_len]seed.
99
100 Предусловие
101 По адресу state зарезервировано prngEcho_keep() октетов.
102
103 seed_len > 0.
104
105 Буфер seed корректен.
106
107 Ожидается
108 Буфер seed остается корректным на протяжении всей работы с
109 состоянием state.
110
111 Аргументы
112 state состояние эхо-генератора
113 seed инициализирующий буфер
114 seed_len длина seed в октетах
115
116 void prngEchoStepR (void * buf, size_t count, void * state)
117 В буфер [count]buf записываются октеты, построенные с помощью
118 эхо-генератора с состоянием state. Состояние state изменяется при
119 генерации.
120
121 Ожидается
122 prngEchoStart() < prngEchoStepR()*.
123
124 Прим.
125 Поддержан интерфейс gen_i (defs.h).
126
127 Аргументы
128 buf буфер
129 count размер буфера (в октетах)
130 state состояние
131
132 size_t prngSTB_keep ()
133 Возвращается длина состояния функций, реализующих генератор СТБ.
134
135 Возвращает
136 Длина состояния.
137
138 void prngSTBStart (void * state, const u16 z[31])
139 Состояние state генератора СТБ инициализируется по числам массива
140 [31]z. При нулевом z предполагается, что z[0] = 1, z[1] = 2,..., z[30]
141 = 31.
142
143 Предусловие
144 По адресу state зарезервировано prngSTB_keep() октетов.
145
146 Если z != 0, то буфер z корректен.
147
148 Если z != 0, то z[i] > 0 && z[i] < 65257, i = 0, 1,..., 30.
149
150 Аргументы
151 state состояние генератора
152 z числа z[i]
153
154 void prngSTBStepR (void * buf, size_t count, void * state)
155 В буфер [count]buf записываются октеты, построенные с помощью
156 генератора СТБ с состоянием state. Состояние state изменяется при
157 генерации.
158
159 Ожидается
160 prngSTBStart() < prngSTBStepR()*.
161
162 Прим.
163 Поддержан интерфейс gen_i (defs.h).
164
165 Аргументы
166 buf буфер
167 count размер буфера (в октетах)
168 state состояние
169
171 Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
172
173
174
175Библиотека Bee2 Пт 23 Июн 2023 prng.h(3)