Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР Методы программирования Build1.0.pdf
Скачиваний:
97
Добавлен:
10.06.2015
Размер:
1.89 Mб
Скачать
0 X0 < m .

71

15.Псевдослучайные последовательности

Вид занятия – лабораторная работа Цель – исследование методов генерации псевдослучайных значений, оценка качества ПСП

Продолжительность – 4 часа

Числа, которые выбираются случайным образом, находят множество случайных применений: моделирование; принятие решений; выборочный метод; компьютерное программирование; развлечения. А что такое “случайность”? Охотнее говорят о последовательности независимых случайных чисел с заданным распределением.

Равномерным распределением на конечном множестве чисел называется такое распределение, при котором любое из возможных чисел имеет одинаковую вероятность появления.

В течение долгих лет, те, кому случайные числа были нужны для исследований, таскали шары из урны, бросали игральные кости или раздавали карты. Сегодня появились более совершенные способы генерации случайных чисел и псевдослучайных последовательностей.

Генератор псевдослучайных чисел (ГПСЧ, PRNG(англ.)) — алгоритм, генерирующий последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению (обычно равномерному).

Метод середин квадратов

Метод середин квадратов предложен Джоном фон Нейманом в 1946 году. Его идея заключалась в следующем:

1. Берём N-значное число

Æ 5772156649

2.Возводим число в квадрат Æ 33317792380594909201

3.Из результата (2N-значного числа) берём N средних цифр Æ 7923805949

4.Возвращаемся к 1-му шагу.

На языке Паскаль указанный алгоритм будет выглядеть следующим образом:

var MisSqSeed : integer;

Function GetNum:Integer; var Seed:integer;

Begin

Seed:=MisSqSeed* MisSqSeed; MisSqSeed:=(Seed DIV 100) MOD 10000; Result:= MisSqSeed ;

End;

Линейный конгруэнтный метод

Линейный конгруэнтный метод предложен Д.Г. Лехмером (D.H. Lehmer) в 1949 году. Он основан на математическом выражении:

X n+1 = (aX n +c)mod m

где: m – модуль 0 < m ; a – множитель 0 a < m ; с – приращение 0 c < m ; в момент запуска Xn= X0 ; X0 – начальное значение

Конгруэнтная последовательность всегда образует петли, т.е. обязательно существует цикл, который будет повторяться бесконечное количество раз. Поэтому для получения большого периода повторения m должно быть достаточно большим.

72

Рисунок 15.1. – Пример ПСП последовательности сгенерированной в программе Mathcad

Из представленного на рисунке 15.1 графика видно, что период линейной конгруэнтной последо-

вательности с параметрами a=11, c=67 и m=255 невелик. Поэтому такая ПСП вряд ли подойдёт

для применения в криптографических системах.

Генератор псевдослучайных чисел, поставляемый с системой

Большинство языков программирования обладают встроенными генераторами ПСП. Например, в среде Delphi имеется функция:

function Random [( Range: Integer)];

выдающая равномерно распределенное число от 0 до Range-1, и связанная с ней переменная

var RandSeed: LongInt = 0;

инициализирующая старт последовательности. Однако почти все встроенные генераторы используют рассмотренную выше рекуррентную последовательность.

Оценка качества генератора ПСП

Качественный генератор случайных чисел характеризуется тремя свойствами:

1.Равномерным распределением случайных чисел.

2.Непредсказуемостью значений.

3.Замкнутостью цикла (способностью генерировать весь перечень значений из заданного подмножества).

При оценке качества ПСП различают два вида критериев: эмпирические критерии, при которых компьютер манипулирует группами чисел последовательности и вычисляет определённые статистики, и теоретические критерии, для которых характеристики последовательности определяются с помощью теоретико-числовых методов, основанных на рекуррентных правилах, которые используются для образования последовательности.

Один из наиболее эффективных способов оценки последовательность на “качество случайности” основан на критерии “Хи-квадрат”- χ2 . Однако в нашей лабораторной работе мы проведём анализ ПСП с помощью трёх эмпирических критериев:

-тест на длительность периода повторения последовательности;

-критерий равномерности (критерий частот);

-тест на пропуски.

Критерий равномерности проверяет тот факт. что ПСП распределяет генерируемые значения по всему заданному диапазону.

73

Тест на пропуски гарантирует, что последовательность случайных чисел не будет сначала попадать в один поддиапазон, затем во второй, затем в третий…, несмотря на то, что в целом числа будут равномерно распределены по поддиапазону.

Задание

1.Подготовьте программную реализацию трех различных генераторов псевдослучайных последовательностей, например системного генератора, генератора на основе метода середин квадратов и линейного конгруэнтного метода.

2.Оцените качество генератора поставляемого с системой (функция Random) генераторов ПСП рассмотренных в данной работе по критерию равномерности и теста на пропуски.

3.Предложите способ тестирования и проведите анализ генератора построенного на основе линейного конгруэнтного метода на длительность периода повторения.

При визуализации результатов работы (задание 2) целесообразно воспользоваться диаграммой TChart. Описание этого компонента вы найдёте среди приложений к этому материалу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]