Сравнительный анализ генераторов случайных чисел по критерию "Хи-квадрат"
Автор: Шабунин Д.О., Спирин Д.В.
Журнал: Форум молодых ученых @forum-nauka
Статья в выпуске: 11-2 (27), 2018 года.
Бесплатный доступ
Работа посвящена сравнительному анализу генераторов случайных чисел программ: PascalABC.NET, Microsoft Office Excel 2016 и Delphi XE Version 15.0.3953.35171 по критерию «хи-квадрат». Результаты анализа свидетельствуют о пригодности каждого из рассмотренных генераторов случайных чисел, т.е. о соответствии критерию «хи-квадрат».
Генератор случайных чисел, критерий "хи-квадрат", анализ, случайные числа, псевдослучайные числа
Короткий адрес: https://sciup.org/140280443
IDR: 140280443
Текст научной статьи Сравнительный анализ генераторов случайных чисел по критерию "Хи-квадрат"
Случайные числа имеют широкий спектр применения - от моделирования до криптографии [3,6]. Задолго до изобретения компьютеров для решения ряда задач, основанных на случайных числах, ученым приходилось использовать «подручные средства»: вытаскивание шаров из шляпы, карт из колоды или бросание игральных костей. В наше время для решения подобных задач принято выделять три способа получения случайных чисел: таблица случайных чисел, генератор случайных чисел и метод псевдослучайных чисел. Более подробно остановимся на псевдослучайных числах [6].
Числа, которые получаются по какой-либо формуле или имитирующие значения случайной величины X, называются псевдослучайными числами [6]. Под словом «имитирующие», подразумевается, что эти числа удовлетворяют тестам так, словно и были значениями этой случайной величины.
Считается, что первый алгоритм для получения псевдослучайных чисел был разработан Дж. Нейманом. Он называется методом середины квадратов [5].
Затем в 1949 году Д. Г. Лемер предложил линейный конгруэнтный метод [2]. Суть заключается в вычислении последовательности случайных чисел Хп с помощью рекуррентной формулы:
Хп+1 = (а * Хп + с) mod. т. (1)
Еще одним широко распространенным алгоритмом генерации псевдослучайных чисел является алгоритм BBS или генератор с квадратичным остатком. Свое название он получил от фамилий авторов: L. Blum, M. Blum, M. Shub [4].
Заключается он в следующем. Выбираются два простых числа p и q такие, что при делении каждого числа на 4, в результате получается остаток 3. Затем вычисляем целое число Блюма M=p*q. Далее выбирается взаимно простое c M число x и вычисляется стартовое число генератора %0 = %2 mod М. Таким образом, для вычисления i-го элемента используется формула xt = xi-i2 mod М. (2)
В современных компьютерах используется генератор случайных чисел, но что же это такое? Генератор случайных чисел - это программа, дающая на своем выходе последовательность чисел, которая может успешно пройти статистические или вероятностные тесты на случайность [1].
Если говорить о случайных числах, то они должны иметь равномерный закон распределения, это касается и генераторов случайных чисел, иначе их использование может привести к неверным результатам. За одно обращение такой генератор возвращает одно случайное число в установленных границах. Если воспользоваться таким генератором достаточное число раз n , то в идеальном случае в каждую из k категорий попадет одинаковое число и( случайных чисел [6].

Рис 1.Распределение случайных чисел по категориям k
В нашей работе мы задаемся вопросом: удовлетворяют ли привычные для нас генераторы псевдослучайных чисел требуемому условию? Для решения данного вопроса мы протестируем генератор псевдослучайных чисел в PascalABC.NET, Microsoft Office Excel 2016 и Delphi XE Version 15.0.3953.35171, используя критерий «хи-квадрат» (/2 — критерий).
Этапы анализа
I Подготовительный этап
Пусть у нас есть k категорий, в которые может попасть случайное число. Вычисляется вероятность p i попадания случайного числа в одну из категорий k. Выполняется достаточно большое количество n наблюдений. Находим ожидаемое число np i попаданий случайного числа в одну из категорий k за n итераций [1,3].
Категории, k |
0 |
1 |
2 |
3 |
… |
k |
Вероятность, pt |
1 /k |
1 /k |
1 /k |
1 /k |
… |
1 /k |
Ожидаемое число попаданий, np i |
n/k |
n/k |
n/k |
n/k |
… |
n/k |
Табл. 1.
II Основной этап
Подсчитываем количество попаданий Y^ случайных чисел в каждую из k категорий.
Категории, k |
0 |
1 |
2 |
3 |
… |
k |
Наблюдаемое число попаданий, Y i |
Y o |
Y i |
Y 2 |
Y 3 |
… |
Yk |
Табл. 2.
Далее перейдем к непосредственному расчету / 2 по формуле
k
х2=Е
I = 1
(Y i - npf>2
npi
III Этап интерпретации результата
После того как произвели все расчеты, сравниваем/2 с числами из таблицы 3 [3] при v= к -1, где v - количество степеней свободы. Если / 2
меньше 1%-й точки или больше 99%-й точки, отбрасываем эти числа как недостаточно случайные. Если χ2 лежит между 1%-й и 5%-й точками или между 95%-й и 99%-й точками, то эти числа «подозрительны»; если χ2лежит между 5%-й и 10%-й точками или 90% и 95% точками, числа можно считать «почти подозрительными». Если χ2 лежит между 5%-й и 95%-й точками то эти числа «пригодные» для использования. Проверка по χ2-критерию часто производится три раза и более с разными данными. Если, по крайней мере, два из трех результатов оказываются подозрительными, то числа рассматриваются как недостаточно случайными [1,3].
p=1% |
p=5% |
p=25% |
p=50% |
p=75% |
p=95% |
p=99% |
|
ν=1 |
0.00016 |
0.00393 |
0.1015 |
0.4549 |
1.323 |
3.841 |
6.635 |
ν=2 |
0.02010 |
0.1026 |
0.5754 |
1.386 |
2.773 |
5.991 |
9.210 |
ν=3 |
0.1148 |
0.3518 |
1.213 |
2.366 |
4.108 |
7.815 |
11.34 |
ν=4 |
0.2971 |
0.7107 |
1.923 |
3.357 |
5.385 |
9.488 |
13.28 |
… |
|||||||
ν=9 |
2.088 |
3.325 |
5.899 |
8.343 |
11.39 |
16.92 |
21.67 |
ν=50 |
29.71 |
34.76 |
42.94 |
49.33 |
56.33 |
67.50 |
76.15 |
ν>30 |
v +^2vX p + 2 xZ p - 2 +O(1/Vv) |
||||||
Х р |
-2.33 |
-1.64 |
-0.674 |
0.00 |
0.674 |
1.64 |
233 |
Табл. 3. Некоторые процентные точки χ 2 -РАСПРЕДЕЛЕНИЯ
Производим генерацию случайного числа n=1000 раз и, опираясь на первый и второй этапы, заполняем таблицу полученными данными.
Категории, k |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Вероятность, |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
0,1 |
P i |
||||||||||
Ожидаемое число попаданий, n P i |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
Наблюдаемое число попаданий, Y i |
94 |
101 |
100 |
95 |
115 |
103 |
86 |
104 |
108 |
94 |
Табл. 4.
Для наглядности распределения поместим полученные значения Y^ в гистограмму.
Количество выпаданий случайного числа от 0 до 9

Рис. 2.Распределение случайных чисел по категориям k при n=1000 в
Теперь, когда все данные полученные, найдем значение χ2.
к
^2=Z i=i
(Y i - nP i )2 = (Y 0 - пР о )2 (V.^ + _ + (Y 9 - ПР 9 )2
HP i
пр о
пр1
пр9
= (94 - 100)2 (Y1 - 100)2 (Y9 - 100)2 =
100 100 ^ 100 ■ ■
Полученное нами значение χ 2 =6,08 сравниваем с данными таблицы
1 при ν = 9. Несложно заметить, что экспериментальное значение лежит между 25%-й и 50%-й точками, что говорит о «пригодности» полученных случайных чисел.
Остальные опыты проводятся аналогично.
В ходе исследования были получены следующие результаты
Среда |
n |
k |
Результат ( x 2 ) |
|||
1 опыт |
2 опыт |
3 опыт |
СРЕДНЕЕ |
|||
PascalABC.NET |
1000 |
10 |
3,92 |
6,08 |
9,58 |
8,47 |
5000 |
10 |
10,4 |
4,65 |
3,92 |
6,32 |
|
10000 |
10 |
13,4 |
7,36 |
7,71 |
9,49 |
|
Microsoft Office Excel 2016 |
1000 |
10 |
3,92 |
5,04 |
10,9 |
6,62 |
5000 |
10 |
11,3 |
7 |
6,07 |
8,124 |
|
10000 |
10 |
5,45 |
14,3 |
11 |
10,25 |
|
Delphi XE Version 15.0.3953.35171 |
1000 |
10 |
4,74 |
6,8 |
7,08 |
6,21 |
5000 |
10 |
9,62 |
7,22 |
7,28 |
8,04 |
|
10000 |
10 |
8,75 |
8,72 |
4,48 |
7,32 |
Табл. 5.
Вывод
В ходе работы были проверены три генератора псевдослучайных чисел в трех средах: PascalABC.NET, Microsoft Office Excel 2016 и Delphi XE Version 15.0.3953.35171 при помощи критерия «хи-квадрат» (χ2 – критерий). Сравнительный анализ показал, что каждый из генераторов псевдослучайных чисел дает пользователю последовательность случайных чисел, пригодную для использования, удовлетворяющую χ2 –критерию. В дальнейшем планируется увеличить количество опытов, а также расширить круг программ, которые будут проверены.
Список литературы Сравнительный анализ генераторов случайных чисел по критерию "Хи-квадрат"
- Бакнелл, Д. Фундаментальные алгоритмы и структуры данных в Delphi - М.: ДиаСофтЮП, 2003. - 557 с.
- Баркалов, К.А. Образовательный комплекс «Параллельные численные методы» - Н. Новгород: ННГУ им. Н.И. Лобачевского, 2011. - 27 с.
- Кнут, Д. Искусство программирования. Том 2. Получисленные алгоритмы - М.: Вильямс, 2007. - 788 с.
- Краснов, М. В.методические указания «Математические методы защиты информации». Ч. 3 - Ярославль: ЯрГУ, 2013. - 48 с.
- Муравьев, Г.Л. Имитация случайных объектов - Брест: БрГТУ, 2011. - 33 с.
- Соболь, И. М. Метод Монте-Карло - М.: Наука, 1968. - 64 с.