Скачиваний:
11
Добавлен:
28.03.2019
Размер:
874.21 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«КАЗАНСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ им. А.Н. ТУПОЛЕВА-КАИ»

Чистопольский филиал «Восток» Кафедра компьютерных и телекоммуникационных систем

Методические указания

по выполнению лабораторных работ

по учебной дисциплине

«Генераторы случайных и псевдослучайных последовательностей»

Индекс по учебному плану: Б1.В.ДВ.19.02

Направление подготовки: 09.03.01 Информатика и вычислительная

техника

Квалификация: Бакалавр

Профиль подготовки: Интегрированные автоматизированные

информационные системы

Вид профессиональной деятельности: научно-исследовательская,

проектно-конструкторская, проектно-технологическая

Рекомендованы УМК ЧФ «Восток» КНИТУ-КАИ

Чистополь

2016 г.

Лабораторная работа № 1

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

Цель работы: изучение программного способа формирования последовательностей равномерно распределенных чисел. Создание процедур, формирующих последовательности равномерно распределенных чисел.

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

Широкое применение получили так называемые конгруэнтные процедуры генерирования псевдослучайных последовательностей: эти процедуры описываются в виде рекуррентного соотношения, когда значение последующего хi-го числа зависит от значения предыдущего хi-1-го числа последовательности

Xi=(Lxi-1+N) MODK,

где L – множитель; N – аддитивная константа.

Начальное значение х0 выбирается в соответствии с конкретными указаниями к процедуре, число (R) MOD K есть остаток от деления на K числа R. Например, 42 MOD 25=10; L,N,K,хi являются целыми числами. Для преобразования целого числа xi в правильную дробь на интервале (0,1) слева от xi подставляется запятая, т.е. xi рассматривается как дробная часть правильной дроби. Например, число xi =3269 будет преобразовано на выходе процедуры в число 0,3269. Конгруэнтная процедура получения последовательности псевдослучайных равномерно распределенных чисел может быть реализована мультипликативным либо смешанным методом.

Мультипликативный метод является частным случаем конгруэнтного при N=0; х=(Lхi-1) MODK.

В смешанном методе в отличие от мультипликативного N не равно нулю. При выборе х0, L, N, K необходимо соблюдать следующие правила:

1.Число х0 может быть произвольным.

2.Число K должно быть велико. Удобно выбирать его равным размеру слова вычислительной машины, поскольку при этом эффективно вычисляется (L xi +N) modk.

3.Если K представляет собой степень двойки, L выбирается таким, чтобы (L)mod8=3;

L K ; желательно выполнение условия K /100 L K K ; последовательность

разрядов в двоичном представлении L не должна иметь регулярного вида, например,

L≠11001100…

 

 

 

 

 

4. Постоянная

N

должна

быть

нечетна.

Желательно,

чтобы

N / k 1/ 2

3 / 6 0.2113248654

051871 .

 

 

 

Конгруэнтные процедуры – не единственный источник ПСЧ. Некоторые известные методы рассмотрены в /1, 2, 3/.

Помимо создания пользовательских процедур получения требуемых чисел, имеется еще одна возможность формирования ПСЧ программным способом – использование стандартного программного обеспечения.

Так, например, в языке Turbo Pascal обращение к стандартному программному датчику ПСЧ осуществляется с помощью функции RANDOM:

function RANDOM (N: WORD);

Функция возвращает одно целочисленное равномерно распределенное число в интервале

(0, N). В случае вызова функции без параметра N возвращается одно вещественное число,

равномерно распределенное в интервале (0,1).

Перед первым обращением к функции RANDOM необходимо определить начальное значение программного датчика. Программный датчик инициализируют с помощью процедуры RANDOMIZE. При этом происходит обращение к системному таймеру, и некоторое случайное число заносится в предписанную переменную с именем RANDSEED. При необходимости начать генерацию с некоторого определенного состояния следует занести его значение в переменную RANDSEED присвоением.

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

В данном примере программный датчик реализован в виде функции RND на языке Turbo Pascal, которая при каждом обращении возвращает одно РРПСЧ в интервале (0,1),

сформированное мультипликативным методом.

В примере используются следующие значения констант:

L=5169, x0=7533, k=2q=216=65536.

FUNCTION RND: REAL;

{ х – глобальная переменная типа word} begin

x:=L*x; { т.к. k – целая степень числа 2, то операция (L*x) mod k сводится к выделению q младших разрядов числа L*x }

RND:=X/65536; {приведение возвращаемого числа RND к интервалу (0,1) } end;

Обращение к данной процедуре имеет вид: y:=RND;

где y – переменная типа REAL.

Порядок выполнения работы

1.Изучить теоретический материал по данной теме.

2.В соответствии с полученным заданием создать программный генератор ПСЧ.

3.Пользуясь собственным программным генератором (п.2), сформировать файл ПСЧ. Определить программно статистические оценки математического ожидания и

дисперсии для полученной последовательности.

 

Рекомендуется формировать не менее 1000 чисел; файл сопроводить

расширением

*.dat и разместить его на диске b.

 

4.Пользуясь автоматизированной системой обработки статистической информации ANALYZE.EXE, построить гистограмму статистического распределения для чисел из созданного в п.3 файла.

5.Сравнив полученные в п.3 статистические точечные характеристики с теоретическими и визуально оценив гистограмму, дать первичную оценку качества программного датчика.

6.Оформить и защитить отчет по лабораторной работе.

Лабораторная работа № 2

Нелинейный конгруэнтный генератор

К этим генераторам относится BBS-генератор (генератор Блюм-Блюма-Шуба). Важным достоинством этого генератора является то, что при знании разложения n на множители, он допускает прямое определение отдельных бит, которые в нем вырабатываются. Имеем (12):

xi x02i mod n

(12).

По теореме Эйлера (13):

x

( p 1)(q 1)

 

1mod n

(13),

а значит можно получить (14):

xx2i mod( p 1)(q 1)

i0

mod n

(14),

т.е. с помощью двух операций модульного возведения в степень, которые эффективно вычисляются, любое число xi может быть найдено исходя лишь из начального вектора x0 и

индекса i.

Аналогичным способом можно построить генератор ПСП на основе другой односторонней функции с секретом, например, лежащей в основе криптосистемы RSA, т.е. на

основе функции (15):

F(x) x

e

mod n

 

(15),

 

 

где n=pq; p и q – простые числа, причем генератор называется генератором RSA.

Порядок выполнения работы

p

q

; а e взаимно простое с (p-1)(q-1). Такой

1.Изучить теоретический материал по данной теме.

2.В соответствии с полученным заданием создать программный генератор ПСЧ.

3.Пользуясь собственным программным генератором (п.2), сформировать файл ПСЧ.

Определить программно статистические оценки математического ожидания и

дисперсии для полученной последовательности.

Рекомендуется формировать не менее 1000 чисел; файл сопроводить расширением

*.dat и разместить его на диске b.

4.Пользуясь автоматизированной системой обработки статистической информации ANALYZE.EXE, построить гистограмму статистического распределения для чисел из созданного в п.3 файла.

5.Сравнив полученные в п.3 статистические точечные характеристики с теоретическими и визуально оценив гистограмму, дать первичную оценку качества программного датчика.

6.Оформить и защитить отчет по лабораторной работе.

Лабораторная работа № 3

Генератор на основе линейных регистров сдвига

Цель работы: изучение основных способов формирования последовательностей равномерно распределенных чисел; создание файла чисел, формируемых моделью генератора псевдослучайных чисел регистровой структуры.

При реализации статистического моделирования на ЭВМ наиболее часто используются последовательности равномерно распределенных чисел. Они представляют собой некоторое количество чисел, имитирующих выборку равномерно распределенных чисел с заданными параметрами (например, А и В – нижняя и верхняя границы интервала равномерной функции распределения на рис. 4).

При заданных значениях А и В математическое ожидание М и дисперсия D

определяются следующим образом: М = (А+В) / 2; D = (В-А)2 / 12.

Рис. 4. График функции плотности равномерного закона распределения

Широкое распространение находят как случайные числа, так и псевдослучайные. В

качестве источника случайности используются физические шумы в электронных и полупроводниковых приборах, явления распада радиоактивных элементов и т.д. Числа,

получаемые по определенному алгоритму, т.е. детерминированные числа, но удовлетворяющие определенным критериям случайности, называются псевдослучайными.

Если получена последовательность y1,y2,…,yn, равномерно распределенных в интервале

(C, D), то для перехода к последовательностям x1,x2,…,xn из интервала (А, В) применяется следующая формула:

x

 

B A

y

AD BC

, i 1,n

 

 

i

 

D C

i

D C

 

 

 

 

 

При C=0 и D=1 получаем: xi=(В - А)*yi + А.

При С=0 и D=М, где М – целое число, получаем

xi B A yi A M

На практике используются три основных способа генерирования случайных чисел:

табличный (файловый), программный и аппаратный (физический).

Табличный способ Если сформированные каким-либо способом случайные и псевдослучайные числа

оформить в виде таблицы (массива) и записать их во внешнюю (магнитные диски или ленты)

или оперативную память, то такой способ называют табличным. При реализации этого способа приходится сталкиваться лишь с программными трудностями, связанными с организацией последовательного ввода в ОЗУ больших массивов информации.

Достоинства метода:

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

-требуется лишь однократная проверка чисел.

Недостатки метода:

-запас чисел ограничен;

-тратится много времени на обращение к внешней памяти;

-характеристики случайных воздействий трудно изменить в ходе моделирования.

Программный способ

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

Псевдослучайными они названы потому, что алгоритмы их формирования являются детерминированными. Зная начальное число, с помощью некоторого рекуррентного выражения однозначно определяются последующие числа. Однако полученные числа удовлетворяют определенным критериям случайности. Подробнее программный способ рассмотрен в лабораторной работе № 3.

Аппаратный способ

При аппаратном способе случайные или псевдослучайные числа вырабатываются специальной электронной приставкой-генератором, который является внешним устройством ЭВМ либо входит в состав процессора. При этом системное обеспечение ЭВМ должно содержать средства доступа к такому устройству.

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

либо массивами. Признак псевдослучайности, количество чисел задаются пользователем при обращении к процедуре обеспечения доступа к устройству.

Наибольшее распространение на практике нашли генераторы псевдослучайных чисел

(ГПСЧ), построенные на основе регистра сдвига с реализацией некоторой логической функции в цепи обратной связи. Изменяя структуру регистра сдвига и вид логической функции, можно получать различные последовательности чисел. На рис. 5 приведена структурная схема такого ГПСЧ в общем случае.

 

 

 

X1

 

 

 

X2

 

 

Xm-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R1

 

 

 

 

R2

 

 

..

 

 

Rm-1

 

 

 

Rm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α1

 

α2

 

αm-1

αm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

КС1

 

 

 

КС2

 

..

 

 

КСm-1

 

 

 

КСm

 

α0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5. Структурная схема ГПСЧ регистровой структуры

ГПСЧ состоит из m-разрядного регистра сдвига R1,R2,…, Rm и набора комбинационных схем КС1,КС2 ,…,КСm в цепи обратной связи. Двоичные псевдослучайные символы x1, x2,…, xm

формируются на выходах R1,R2,…, Rm. Регистр сдвига кроме функции хранения предшествующих m символов последовательности x1, x2,…, xm выполняет также их сдвиг в последующем такте, при этом вход Ri формируется схемой КСi. На вход схемы КСi подаются сигнал с выхода Ri при αi=1 и сигнал с КСi+1(i 1,m 1), на вход КСm подаются сигнал с выхода

Rm при αm=1 и внешний сигнал α00=0 или 1). Если αi=0, то сигнал с выхода Ri не подается на вход схемы КСi.

Пусть КС представляют собой сумматоры по модулю 2, α0=0. Тогда состояние схемы

(рис. 5) в момент времени t+1 описывается следующей системой уравнений:

x (t 1)

x (t)

2

x

(t) ...

m 1

x

(t)

m

x

m

(t)

 

 

1

 

 

1

1

 

2

 

m 1

 

 

 

x

 

(t 1)

x (t)

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

x

 

(t 1) x

(t)

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

(t 1)

x

 

(t)

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m 1

 

 

 

 

 

 

 

 

 

 

 

Полученные уравнения можно записать в матричном виде:

X(t+1)=A X(t), где

x (t 1)

 

 

 

 

 

...

 

 

 

 

x (t)

1

 

 

 

1

2

m 1

m

 

1

 

 

 

 

 

 

 

 

 

 

 

 

x

 

(t 2)

 

 

 

 

 

 

x

 

(t)

2

 

1

 

0

 

... 0

 

0

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

.

 

 

X (t 1)

 

 

;

A 0

 

1 ... 0

 

0

 

;

X (t)

 

 

.

 

 

 

 

 

.

 

 

 

 

 

 

 

 

.............

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

0

 

0

0

1

0

 

 

 

 

x

 

 

(t 1)

 

 

 

x

 

 

(t)

m

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Зная матрицу А и состояние выходов регистра R1,R2,…, Rm в момент времени t (т.е.

вектор-столбец Х(t)), можно определить состояние регистра в (t+S)-й момент времени,

воспользовавшись преобразованием:

X(t+S)=ASX(t).

Последовательности на выходе ГПСЧ являются циклическими, т.е. через определенное количество тактов последовательность повторится. Очевидно, что максимальная длина

последовательности равна 2n-1. Однако в зависимости от структуры обратной связи и от исходного состояния регистра сдвига она может быть иной (в частности, даже единичной).

Циклические свойства ГПСЧ определяются характеристическим многочленом матрицы

А:

(x) x

m

1x

m 1

2 x

m 2

... m ,

(1)

 

 

 

которым является определитель матрицы ||А+хЕ||, где Е – единичная матрица.

Периодические свойства последовательностей, генерируемых рассматриваемым ГПСЧ,

связаны с понятиями приводимости и примитивности многочлена вида (1). Если φ(х) степени m

не делится ни на какой другой многочлен от х меньшей степени, то такой многочлен называется неприводимым. Примитивность φ(х) означает, что он не является сомножителем многочлена xS+1 для любого S<(2m-1).

Доказано, что если φ(х) неприводим и примитивен, то генерируется последовательность,

имеющая максимальный период Т=2m-1. В других случаях Т<(2m-1).

Схема, приведенная на рис.5, может служить последовательным генератором псевдослучайных n-разрядных целых чисел (n≤m). При этом каждый разряд числа формируется на выходе отдельного разряда регистра (т.е. в формировании числа могут принимать участие любые n разрядов регистра).

Для формирования псевдослучайных чисел (ПСЧ) в диапазоне (0,1), представляющих собой правильную дробь, запятая фиксируется перед старшим разрядом числа, тогда с регистра снимается дробная часть двоичного числа.

Если съем информации производится в каждом такте, то числа будут коррелированны

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

Для получения в каждом такте очередного многоразрядного псевдослучайного числа,

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

S – разрядный сдвиг за один такт будет реализован, если в качестве матрицы функционирования схемы взять матрицу Аs (S>1) вместо матрицы А, соответствующей регистру с одноразрядным сдвигом.

Рассмотрим пример многоразрядного сдвига для пятиразрядного генератора (m=5).