
- •Датчики последовательности псевдослучайных чисел. Оглавление
- •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].
- •Литература
Тесты на равномерность распределения псевдослучайных чисел Тесты к- равномерности. [2]
Пусть 1,2,3,…бесконечная последовательность “настоящих” случайных выборочных значений для равномерного распределения на отрезке [0,1].
Разобьём эту последовательность на группы из kвеличин и обозначим их какk- мерные вектораi(k).
Пример разбиения на 3-х мерные вектора:
123456789101112…
(123) (456) (789) (101112) …
1(3)2(3)3(3)4(3) ….. ηn(3)
Возьмём единичный k- мерный куб. “Единичный”- означает, что грань куба имеет длину, равную единице (т.е. как раз равна отрезку существования случайной величиныi).“k- мерный”– означает, что куб имеет k граней.
С вероятностью равной единице вектора n(k) равномерно заполняют единичныйk- мерный куб. Это означает, что частота попадания вектора в любую прямоугольную область куба стремится к объёму этой области приn. Бесконечные последовательности чисел, обладающие такими свойствами, называютсяk- равномерными.
Ясно, что очень важно проверять k-равномерность псевдослучайных чисел, хотя бы дляk=1,2,3,4. Т.к. требуется моделировать случайность, то и проверку следует проводить с помощью статистических критериев, например, критерия хи- квадрат (2).
Это реализуется следующим образом. Разобьем каждую грань нашего куба на qчастей. Т.е. единичныйk-мерный куб будет состоять изM=qkодинаковых кубиков с объемом 1/qkкаждый.
Пусть m1,m2, …,mMколичество точек из последовательности1(k),2(k), …,N(k)попавших в соответствующие кубики. Очевидно:
m1+m2+ …+mM =N
Известно, что для “настоящей случайной” последовательности с равномерным распределением и независимыми векторами i(k)величина
является случайной и имеет 2 распределение с (M-1) степенями свободы.
Поэтому в качестве теста на k-равномерность подсчитываем из реализации псевдослучайной последовательностиRiопытную2 величину:
(A)
где mj– количество k-мерных точек (векторовn(k), попавших вj-ую ячейкуk-мерного куба).
N/M- теоретическая частота попадания случайной величины(k)в ячейкуk-мерного куба.
1/M- теоретическая вероятность попадания случайной величины(k)в любую ячейку.
Вычисленные значения 2сравниваем с табличными значениями2табл(p,). Эту величину называют доверительной границей, где:
p– заданный уровень риска (уровень значимости). Его обычно берут в пределах 0,05…0,001.
=M-2 – число степеней свободы.
Если окажется, что 2эксп>2табл ,(B), то надо поставить под сомнение гипотезу о том, что наша псевдослучайная последовательность имеет равномерное распределение и независимые вектора(k).
При вычислении по формуле (A) вместоiберёмRi.
Выбор Nопределяется из следующих соображений. С одной стороны следует использовать всю длинуLпсевдослучайной последовательности тестируемого датчика, т.е. братьN=L/k. С другой стороны, если предполагается использовать последовательность по частям, то надо тестироватьk-равномерность всех частей.
Величина qзадаёт числоMячеек
разбиения куба. ВеличинуMне рекомендуется брать больше.
Откуда можно определитьq.
Однако, приq>10 уже дляk=3 объём вычислений
становится нереальным. Поэтому приходится
брать небольшие значенияq,
что несколько снижает качество проверки
на равномерность.