Генераторы псевдослучайных чисел. Линейный конгруэнтный генератор
Примером генератора псевдослучайных чисел (ПСЧ) является линейный конгруэнтный датчик ПСЧ:
Тi+1 = ( A*Ti + C ) mod M, (1)
где M – модуль генератора, А и С – неотрицательные константы, меньшие модуля M,Т0 – начальное значение генератора. Величины А, С, Т0 образуют ключ генератора ПСЧ. Значение M обычно выбирается достаточно большим.
Такой датчик ПСЧ генерирует псевдослучайные числа с максимальным периодом повторения M, зависящим от значений А и С, при выполнении условий следующего утверждения.
Утверждение. Длина периода последовательности Ti , определяемой формулой (1), равна М в том и только том случае, если
1) С и М взаимно просты;
2) B = A – 1 кратно p для любого простого p – делителя M;
3) если M кратно 4, то и B кратно 4.
Для получения последовательности, принимающей значения из отрезка [0,1], нормируем последовательность Ti по формуле
Ri = Ti /M. (2)
Для оценки равномерности распределения последовательности R на отрезке [0,1] построим гистограмму. Для этого отрезок [0,1] разбиваем на t (например, t=8) равных частей и подсчитываем количество ПСЧ, попавших в каждый отрезок. В MathCAD используем функцию hist ( t, R ), которая возвращает вектор значений – количество ПСЧ, попавших в j-тый интервал.
Рисунок 1 – Гистограмма распределения последовательности из 64 ПСЧ на отрезке [0,1].
Контрольные вопросы
1. Дайте определение псевдослучайной последовательности.
2. Для какой цели применяют последовательности ПСЧ.
3. Опишите известные генераторы ПСЧ.
4. Какими свойствами должны обладать генераторы ПСЧ для использования их в криптографии.
5. Как оценить равномерность и случайность последовательности ПСЧ.
6. Какие методы применяют для улучшения качеств последовательности ПСЧ.