
- •Датчики последовательности псевдослучайных чисел. Оглавление
- •5. Литература
- •1. Генерация случайных чисел
- •2. Оценка качества датчиков случайных чисел
- •3. Тесты
- •Измерение длин l и l датчика псевдослучайной последовательности чисел.
- •Тесты на равномерность распределения псевдослучайных чисел Тесты к- равномерности. [2]
- •Тест №2
- •2.1 Одномерная равномерность
- •2.2 Двумерная равномерность
- •2.3 Трёхмерная равномерность
- •2.4 Четырёхмерная равномерность
- •Тест №3 Вычисление коэффициентов неравномерности
- •Цифровая равномерность Тест №4
- •4.1 Одномерная цифровая равномерность
- •Двумерная цифровая равномерность
- •4.Датчики случайных чисел Датчик №1: Метод Неймана.
- •Мультипликативные алгоритмы. Датчик №2: Линейный конгруэнтный генератор Лемера 1951.
- •Датчик №3: Модификация Коробова [9].
- •Другие формы вычетов. Датчик №4:
- •Датчик №5
- •Датчик №6[4], [7]
- •Датчик №7 Датчик со счётчиком [5], [7]
- •Тригонометрические алгоритмы.
- •Датчик №8 [7]
- •Датчик №9: Тригонометрический алгоритм со счётчиком [7].
- •Датчик №10:Алгоритм со счётчиком [5].
- •Литература
3. Тесты
Тест№1
Измерение длин l и l датчика псевдослучайной последовательности чисел.
Т.к. вычисления по формуле (1.1):
Ri+1=Q(Ri)
являются детерминированным процессом, то максимальная длина Lmaxпоследовательности неповторяющихся чисел определяется разрядностью ЭВМ. Если ЭВМ выводит результаты вычислений, например, 8-ми разрядной десятичной дробью, но производит вычисления в сетке 10-ти разрядной дроби, то длина Lmaxне может быть больше числа разных возможных значений при вычислении 10-ти разрядной дроби, т.е.Lmax1010. Фактическая длинаL<Lmaxопределяется характером функции генерации (1.1).
Псевдослучайная последовательность начинается с числа R0. Обозначим порядковый номер последнего из неповторяющихся чиселL-1. Тогда в последовательностиR0 ,R1 ,R2 ,…,RL-1 все генерируемые числа разные. Этот начальный участок последовательности длиныLназывают длиной апериодичности (11).
R0 -R1 – R2……… Rk …… Ri1 …… RL = Rk…… Ri2 = Ri1 …… Ri
| | |
| | | | | |
|
0 1 2 ki1LL+lI
ll
После отрезка апериодичности снова следуют отрезки длины lпериодического повторения последовательности чисел. Эти периоды являют собой часть отрезка апериодичности отi=k доi=L-1.
Пусть RL
=Rk,
тогда периодыlсостоят
из последовательностиRk,Rk+1,…,RL-1
, являющейся частью отрезка [0,(L-1)].
Таким образом, всегдаl<Lи тоже определяется свойствами
преобразования (1.1).
Начиная с номера i=L проявляется периодичность:
Ri = Ri-l, для i L
l= L-k
Для экспериментального определения длины периодичности l и длины апериодичностиL выбираем число i1априорно настолько большим, чтобы быть заранее уверенным, чтоi1>k.
Запускаем программу генерации последовательности {Ri} с начального значенияR0и счётчик номеровi.
При i=i1величинуRi1запоминаем.
С этого шага все последующие числа Ri1+1,Ri1+2… и т.д. сравниваем сRi1. Пусть приi=i2получено первое совпадениеRi2=Ri1. Тогда длина периодаl=i2-i1.
Длину апериода L находим путём сравнения двух членов последовательности {Ri} ,разнесённых вилкой на интервалl, для чего генерируем одновременно две последовательности {Ri} и {Ri^}, разнесённые на интервалl.
Шаг i<l, вычисляется только последовательность {Ri} с начального значенияR0.
Шаг i=L, продолжается вычисление {Ri} и начинается вычислениеRi^ = Rl-i,т.е. с начального значенияR0.
На каждом шаге il величиныRiиRi^сравниваются. Приi=L будет выполнятьсяRi =Ri^.
Детально реализация этой идеи за один проход программы осуществляется следующим образом:
Запускается счётчик шагов i.
Запускается программа вычисления {Ri}. На шагеi=0 выполняется операция:R: =R0. Далее на всех последующих шагах выполняется операция:R:=Q(R)
При i=lвключается программа вычисленияRi^, т.е. выполняются операции:R: =Q(R)
R^: = R0
Начиная с шага i=l+1 и далее работают обе программы:
R: = Q(R)
R^: = Q(R^)
Начиная с шага i=lпроизводится сравнениеRi^сRi
При шаге i=Lпроизойдёт совпадениеRi^ =Ri
Задача решена.
Например:
iR
_
R0
_ R1
_ R2
_
R3 k=3
_
R4
_ R5 (i=l=5), R5^=R0R5 l
_ R6 R6^=R1R6
_
R7 R7^=R2R7
_
R8 =R3 R8^=R3=R8 L=8
_
R9 =R4
_ R10 =R5 l
_
R11 =R6
_ R12 =R7
_
R13 = R8 =R3
l= L-k=8-3=5