Проверка генераторов равномерно распределенных псевдослучайных чисел
Лабораторная работа № 1
Анализ и генерация случайных чисел. Основы имитационного моделирования
Цель работы: Изучение основных характеристик случайных величин на базе теории вероятностей и математической статистики; изучение и программирование способов получения псевдослучайных чисел.
Теоретическая часть
Основные понятия и характеристики стохастического процесса
1. Вероятность - мера возможности осуществления результата. Формально это функция Р(х), которая ставит в соответствие результатам некоторые вещественные числа и удовлетворяет аксиомам:
1. 0£Р(х)£1, для любого результата х,
2. Р(s) = 1, где s – пространство выборки,
3. если х1 , х2 , х3 – взаимоисключающие результаты, то вероятность их появления равна сумме вероятностей появления каждого из хi, то есть P(х1 È х2 È х3 ...) = Р(х1)+Р(х2)+P(x3)+...
2. Случайной величиной называется функция, которая ставит в соответствие каждому результату из пространства выборки некоторое вещественное число.
Случайные величины, имеющие конечное или счетное множество значений, называются дискретными: а если они имеют континуум значений, то являются непрерывными случайными величинами.
3. Вероятностное распределение представляет собой некоторое правило задания вероятности для каждого из всех возможных значений случайной переменной.
Вероятностное распределение характеризуется функциейвероятности р(х) и функцией распределения F(x), Функция вероятности устанавливает конкретную вероятность того, что случайная переменная Х принимает значение хi; функция, распределения определяет вероятность того, что случайная величина X примет значение меньше заданного х.
|
|
Для дискретной случайной величины эти характеристики определяются следующим образом:
· р(хi) = Р( Х = хi) со следующими ограничениями:
o
o
· F(x) = P( X < x ) со следующими свойствами:
o
o
Функция распределения и функция вероятностей связаны следующим образом:
Для непрерывных случайных величин функция вероятности заменяется на непрерывную функций плотности вероятности f(x), определяемую как:
Функция распределения:
4. Математическоеожидание - взвешенная по вероятности средняя величина всех возможных значений X, определяющая меру центральности распределения.
· для дискретнойX
· если Х непрерывна.
5. Математическое ожидание Хn называется n -м моментом случайной переменной и определяется следующим образом:
· для дискретнойX
· если Х непрерывна.
Вариациейn -го момента называется n-й момент среднего: .
6. Дисперсией случайной переменной называется второй момент среднего, являющийся мерой разброса вероятностного распределения:
|
|
для дискретной Х
для непрерывной Х
для любой.
7. Среднеквадратичным отклонением случайной величины называется квадратный корень из дисперсии этой величины : .
Функционирование элементов системы, подверженных случайным воздействиям, задается генераторами случайных чисел, реализуемых программными методами, вырабатывающими псевдослучайные последовательности. Псевдослучайными последовательностями называют вполне детерминированные числа, обладающие статистическими свойствами случайных чисел, определяемых путем их проверки специальными тестами, а также периодичностью, т. е. повторяемостью через определенные промежутки времени. При моделировании используются интервалы последовательностей псевдослучайных чисел, в которых нет одного числа, встречающегося более одного раза.
Равномерно распределенные случайные числа в процессе генерации случайных величин с другими вероятностными распределениями, в том числе нормальным, пуассоновским и биномиальным. В настоящее время известно множество методов машинной имитации равномерно распределенной случайной величины r(где 0£r£1). Соответствующие программы-генераторы вычисляют так называемые псевдослучайные числа, которые, хотя и определяются вполне детерминированными отношениями, обладают статистическими свойствами случайных чисел, равномерно распределенных на интервале (0,1). Псевдослучайную последовательность, выдержавшую ряд специальных статистических тестов (частотных, автокорреляционных и т. д.), можно использовать как «истинно» случайную, хотя в действительности она таковой не является.
|
|
Прежде чем перейти к описанию конкретных генераторов псевдослучайных чисел, сформулируем набор требований, которым обязан удовлетворять идеальный генератор. Полученные с его помощью последовательности должны состоять из:
(1) равномерно распределенных,
(2) статистически независимых,
(3) воспроизводимых и
(4) неповторяющихся чисел.
Кроме того, генератор должен (5) работать быстро и (6) занимать минимальный объем машинной памяти. Конгруэнтные процедуры, описанные здесь, удовлетворяют всей совокупности перечисленных требований лучше, чем любые другие методы генерирования случайных чисел.
Мы рассмотрим 3 метода построения псевдослучайных последовательностей на ЭВМ — (1) мультипликативный, (2) смешанный и (3) комбинационный методы. После описания механизмов и некоторых свойств этих процедур мы кратко остановимся на проблеме автокорреляции псевдослучайных чисел и различных тестах, с помощью которых оценивается их «случайность».
|
|
Методы генерирования псевдослучайных чисел. Конгруэнтные методы
Для любой конгруэнтной процедуры можно получить формулу, позволяющую найти i-й член определяемой ею последовательности псевдослучайных чисел {п0, п1, п2,..., п i , … }, не зная никаких членов, кроме нулевого. Тем не менее, в практических приложениях эту последовательность можно рассматривать как реализацию случайного процесса, если только она выдержит ряд специальных статистических тестов, состав которых определяется способом ее применения. Иногда, например, достаточно, чтобы псевдослучайные числа были равномерно распределены и статистически независимы. (Можно показать, что конгруэнтные методы достаточно хорошо удовлетворяют этим условиям.) Все конгруэнтные генераторы автоматически удовлетворяют также требованиям (3) и (6), перечисленным выше, поскольку генерируемые с их помощью последовательности полностью воспроизводимы и занимают минимальный объем машинной памяти. Только степень выполнения (4) и (5) целиком определяется свойствами конкретной схемы. Поэтому рассматриваемые в дальнейшем процедуры анализируются именно с этих позиций.
В основе конгруэнтных процедур генерирования псевдослучайных чисел лежит математическое понятие сравнения.
Говорят, что два целых числа а и b сравнимы по модулю т, если их разность кратна числу т. Отношение сравнения записывают aºb(mod т) и читают: «а сравнимо с bпо модулю m». Это значит, что разность а — b делится на т без остатка, т. е. числа а и bдают одинаковые, остатки при делении на т. Например, 1897º7 (mod 5) и 4339º39 (mod 102).
Все конгруэнтные методы опираются на рекуррентную формулу:
(1)
где п i , т, l и m — неотрицательные целые числа. Запишем (1) при i=0, 1, 2...:
(2)
…
.
Если дано начальное значение n0, множитель l и аддитивная константа m, то (2) определяет последовательность целых чисел {n1, n2,…, ni,…}, составленную из остатков от деления на m членов последовательности Таким образом, для любого i≥1 справедливо неравенство . По целым числам последовательности {ni} можно построить последовательность {ri}= = {ni/m}рациональных чисел из единичного интервала.
Естественно возникает вопрос о существовании наименьшего положительного числа h, при котором nh º n0(mod m)(число hназывают периодом последовательности {ni}). Если такое число b, существует, то как надо выбрать параметры n0 , т, l и m , чтобы сделать период максимальным? Величина hсущественна, поскольку nh º n0(mod m)влечет за собой nh+1=n1, nh+2=n2,.... Таким образом, последовательность {ni}будет периодической, т. е. значения ее членов будут повторяться через hномеров.
Можно показать, что период h всегда существует, причем его максимальное значение является монотонно возрастающей функцией модуля m. Это значит, что конгруэнтные методы не позволяют строить последовательности неповторяющихся псевдослучайных чисел. Тем не менее, в практических ситуациях можно обеспечить удовлетворительную величину периода h, выбирая достаточно большой модуль или применяя другие способы.
Мультипликативный конгруэнтный алгоритмзадает последовательность неотрицательных целых чисел {ni}, не превосходящих т, по формуле:
(3)
представляющей собой частный случай формулы (1) при m=0. Оказалось, что этот метод обладает достаточно хорошими статистическими характеристиками. Выбирая соответствующим образом параметры l и п0, с его помощью можно получить последовательности равномерно распределенных некоррелированных псевдослучайных чисел.
Более того, при выполнении определенных условий на эти параметры генерируемая мультипликативным алгоритмом последовательность обладает максимальным при данном модуле периодом. Поскольку метод полностью детерминирован, последовательности полностью воспроизводимы. Мультипликативный алгоритм требует минимального объема машинной памяти. С вычислительной точки зрения он сводится к последовательному подсчету произведения двух целых чисел — операции, которая очень быстро выполняется современными ЭВМ.
Для численной реализации наиболее удобна версия алгоритма, в которой модуль т равен pe, где p — число цифр в системе счисления, используемой в машине, а е — длина машинного слова, отводимого под запись числа. Для двоичной машины p=2, для десятичной р=10. Величина е для ЭВМ с фиксированной длиной слова задана, а для ЭВМ с переменной длиной слова ее выбор остается на усмотрение программиста. В дальнейшем вместо е мы будем употреблять символы bи d, относящиеся соответственно к двоичной и десятичной ЭВМ.
Выбор т= p е удобен по двум причинам.
1. Во-первых, вычисление остатка от деления на т сводится к выделению е младших разрядов делимого;
2. во-вторых, преобразование целого числа в рациональную дробь из интервала (0,1) осуществляется подстановкой слева от него двоичной или десятичной запятой.
Таким образом, специальный выбор числа т позволяет исключить из процесса счета две операции деления.
Так как в большинстве ЭВМ используются двоичная и десятичная системы счисления, мы рассмотрим мультипликативный метод именно в этих двух случаях. При этом нас будут интересовать только последовательности, порождаемые отношением сравнения вида
Двоичные машины
В этом случае m==2b, где b — число двоичных цифр (битов) в машинном слове. Максимальный период последовательности, генерируемой мультипликативной процедурой, равен 2b-2. Алгоритм построения последовательности с максимальным периодом таков:
1. Выбрать в качестве параметра n0 произвольное нечетное число.
2. Вычислить коэффициент lпо формуле l=8t±3, где t — любое целое положительное число.
3. Вычислить произведение ln0. Полученное число содержит не более 2 b значащих разрядов. Взять bмладших в качестве первого члена последовательности, n1остальные отбросить.
4. Вычислить дробь из интервала (0,1) по формуле r1=n1/2b.
5. Вычислить очередное псевдослучайное число n1 +1 как bправых разрядов произведения ln1и вернуться к п. 4.
В качестве иллюстрации описанной схемы рассмотрим пример, в котором b=4. Мультипликативная процедура должна определить 4 разных числа (h=24-2=4).
1. Положим n0=7. В двоичной форме записи n0=0111.
2. При t=1 коэффициент l можно взять равным 11 или 5. Мы выберем l =5, или в двоичной форме, l = 0101.
3. ln0= (0101)(0111) = 00100011. Отсюда n1 = 0011 и r1 = 3/16 = 0,1875.
4. ln1= (0101)(0011) = 00001111. Отсюда n2 = 1111 и r2 = 15/16 = 0,9375.
5. ln2= (0101)(1111) = 01001011. Отсюда n3 = 1011 и r3 = 11/16 = 0,6875.
6. ln3= (0101)(1011) = 00110111. Отсюда n4 = 0111 =n0 и r4 = 7/16 = 0,4375.
Для 32х разрядного машинного слова m=231 = 2147483648. При этом в 32хразрядном машинном слове, максимальное целое число, размещающееся в машинном слове, равно 231 -1, cледовательно m = 2147483647, b - простое число относительно m: b=2531011, l=8t±3, где t целое число, l = 214013.
Метод Неймана (метод квадратов)
В квадрат возводится, текущее случайное число и из результатов средних разрядов выделяется следующее случайное число, т.е. используется итерация:
· z0 равно некоторому n- разрядному целому числу (например, 9876)
· z1 определяется следующим образом : z0*z0 = 97535376 , z1 =5353 z2 =6546 и т.д.
r i+1 = z i+1 /10n
3. Метод произведений
Два следующих друг за другом случайных числа умножают и из произведения средних разрядов выделяют следующее случайное число.
Проверка генераторов равномерно распределенных псевдослучайных чисел
Выделяют три вида проверки: на периодичность, на случайность, на равномерность. При проверке на случайность используется совокупность тестов проверки: 1) частот, 2) пар, 3)комбинаций, 4) серий, 5) корреляции.
Тест проверки частот предполагает разбиение диапазона распределения на q интервалов и подсчет количества попаданий случайных чисел в выделенные интервалы. Возможно использование критериев согласия. Вероятность попаданий в заданный интервал теоретического распределения определяется по формуле
где xi - верхний предел i-го интервала.
Тест проверки пар заключается в подсчете количества «1» для каждого разряда случайного числа. В этом случае используется критерий согласия c2 с одной степенью свободы. Теоретическая вероятность появления «1» для равномерно распределенных случайных чисел pi =1/2. Поразрядный анализ позволяет отбросить неслучайные разряды, в качестве которых часто оказываются младшие разряды с преобладанием в них «1».
Тест проверки комбинаций сводится к подсчету количества «1» в случайных числах. Можно использовать также критерии согласия. Теоретическая вероятность появления комбинации с i-м количеством «1» будет: где k — количество разрядов случайного числа.
Тест проверки серий заключается в подсчете количества различных длин последовательностей одинаковых значений случайных чисел. Возможно использование критериев согласия. Теоретическая вероятность , где — количество серий i-и длины в N случайных числах; — общее количество серий в N случайных числах при гипотетическом распределении.
Характерная особенность приведенных формул теста серий — независимый учет серий различной длины. Например, одна и та же серия, состоящая из четырех единиц, учитывается как одна серия из четырех, две — из трех и три — из двух единиц.
Тест проверки корреляции заключается в определении коэффициента корреляции. При этом выполняют следующие действия:
· запускают два генератора случайных чисел на отрезке апериодичности с некоторой разницей между собой;
· подсчитывают коэффициент корреляции между этими последовательностями.
Проверка на равномерность. При проверке на равномерность можно использовать тест проверки частот, так как гистограмма частот хорошо отражает равномерность распределения случайных чисел по всему диапазону изменения. Для равномерного распределения случайных чисел и .
Задаемся доверительной вероятностью w того, что оценка математического ожидания M* не выйдет за пределы доверительного интервала:
Р{|М - M*| < e} = w или Р{М - e < М* < M + e}= w,
где M=(a+b)/2, - теоретические величины математического ожидания и среднеквадратичного отклонения, e - бесконечно малая величина. Величина w должна быть достаточно большой и составлять 0.9, 0.95, 0.99.
ЗАДАНИЕ 1
Для стандартного генератора случайных чисел выбранного Вами языка программирования получить три последовательности N случайных чисел (N={100, 1000, 10000}), для которых определить следующие характеристики: математическое ожидание М, дисперсию D и среднеквадратичное отклонение .
Выполнить проверку частотности и равномерности генератора.
Построить графики Функций Р(X) для оценки частотности генератора. Для получаемой выборки N чисел Р(X) – вероятность попадания генерируемой случайной величины в соответствующий интервал ее области определения.
Сравнить результаты с теоретическими.
Для оценки равномерности генератора случайных чисел выполнить расчет математического ожидания Mi для i последовательностей из 1000 случайных чисел (i=1,2,..., 10) и для i последовательностей случайных чисел переменной длины (длина i-ой последовательности задается как i*1000; i = 1, 2, ..., 10). Построить графики зависимости разности (М-Мi) от номера последовательности i, где М - теоретическое математическое ожидание равномерного распределения случайных чисел, Мi - расчетное математическое ожидание для i-й последовательности случайных чисел, полученных от генератора. По данным результатам определить Р{|М-Мi|<s} - вероятность того, что отклонения расчетного математического ожидания от теоретического не превышают величину теоретического среднеквадратичного отклонения.
ЗАДАНИЕ 2
Запрограммировать заданный вариант генератора случайных чисел и выполнить для него задание 1.
Порядок выполнения работы:
1. Изучить теоретическую часть, ответить на контрольные вопросы.
2. Получить у преподавателя свой вариант задания
3. Выполнить задания 1 и 2.
4. Оформить отчет.
Содержание отчета:
1. Описание и текст процедур заданий 1 и 2. Полученные результаты и графики.
2. Сравнение характеристик стандартного и запрограммированного генераторов случайных чисел.
3. Выводы.
Контрольные вопросы
1. Пусть стохастический процесс заключается в 3-х бросаниях монеты. Случайная величина X, характеризующая его, пусть обозначает число орлов, выпавших в результате 3-х бросаний. Построить для Х функции Р(х) и F(x).
2. Построить F(x) по заданной f(x).
3. Может ли быть случайная величина одновременно и дискретной и непрерывной?
4. Каков "физический" смысл понятий математическое ожидание и дисперсия?
5. Какие способы генерации случайных чисел Вы знаете?
6. Каким требованиям должны удовлетворять генераторы псевдослучайных чисел?
Варианты заданий
1. Метод серединных квадратов
2. Метод серединных произведений
3. Метод перемешивания
4. Линейный конгруэнтный метод
5. Инверсный конгруэнтный метод
Лабораторная работа № 2
Дата добавления: 2020-04-25; просмотров: 681; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!