Исследование способов формирования случайной величины на основе псевдослучайных последовательностей. Лаб 1. Лабораторная работа 1 по теме Исследование способов формирования случайной величины на основе псевдослучайных последовательностей
Скачать 207.93 Kb.
|
Лабораторная работа №1 по теме: «Исследование способов формирования случайной величины на основе псевдослучайных последовательностей» Цель работы Провести исследование способов формирования случайной величины на основе датчиков псевдослучайных чисел. Общая постановка задачи Для выполнения лабораторной работы необходимо: Изучить теоретический материал и ответить на контрольные вопросы. Самостоятельно в любой доступной программной среде (Matlab (лучше всего!), Excel и т.д.) разработать программные модули, реализующие рассмотренные выше датчики случайных чисел в соответствии с исходными данными в приведенной ниже таблице. Задать произвольные значения входных параметров a, c, m, x и сгенерировать массивы случайных чисел размерностью N=1000 с использованием разработанных модулей и проанализировать полученные результаты визуально по гистограммам. Рекомендуется значение модуля m задавать значительно больше переменных a и с. Если гистограммы имеют пустые столбцы, изменить входные параметры. Рассчитать для полученных массивов чисел математическое ожидание и дисперсию и сравнить их с теоретическими значениями m=0,5 и D=0,0833. Выполнить ещё несколько раз пункты 2 и 3 для различных значений входных параметров a, c, m, x, а также для различного числа сгенерированных чисел в массиве N (увеличивать на порядок несколько раз), стараясь получить датчики с возможно близкими значениями математического ожидания и дисперсии к теоретическим значениям и с равномерным распределением столбцов гистограммам. Если при увеличении объема массива N сгенерированных чисел вид гистограммы не изменяется, то датчик зациклился и следует изменить входные параметры. Сделать выводы о работе датчиков для каждого из двух алгоритмов в зависимости от числа сгенерированных чисел в массиве N. Исследовать параметры встроенного в системе MATLAB датчика равномерно распределенных на интервале (0, 1) с помощью встроенной функции X = rand(n) сравнив качество его работы с разработанными самостоятельно датчиками для одинаковых значений параметра N. Используя свой датчик сформировать массив чисел с равномерным распределением в другом интервале значений [а, в], и рассчитать математическое ожидание и дисперсию для нового интервала. Значение параметра, а задать по номеру студента в списке группы, а параметр определить по формуле в=2,5 х а. Оформить бланк отчета установленным ниже образом. Листинг датчика на основе алгоритма сложения: a = 565; c = 323; m = 56238423983; x = ones; n = 1000; u = 1/m; for i=1:n x(i+1) = mod((a*x(i)+c),m); u(i+1) = x(i+1)/m; end figure histogram(u,n); M = sum(u)/n; disp("M = "); disp(M); Dr = zeros; for i=1:n Dr(i) = (u(i)-M)^2; end D = sum(Dr)/n; disp("D = "); disp(D); Результат работы датчика сложения Для построения гистограммы использовался массив N = 1000 при a = 565, c =323, m = 56238423983. Рисунок 1 – Гистограмма, где размерность массива N равна 1000 Рисунок 2 – Полученные математическое ожидание и дисперсия Рассматривая полученные данные (рисунки 1-2) затруднительно сделать вывод о том смог ли зациклиться датчик сложения. Результаты дисперсии и математического ожидания приблизительно равны теоретическим данным. Для более точного анализа работы датчика увеличим размерность последовательности до 10000. Рисунок 3 – Гистограмма, где размерность массива N равна 10000 Рисунок 4 – Полученные математическое ожидание и дисперсия Рассматривая полученные данные (рисунки 3-4) затруднительно сделать вывод о том смог ли зациклиться датчик сложения. Результаты дисперсии и математического ожидания приблизительно равны теоретическим данным. Для более точного анализа работы датчика увеличим размерность последовательности до 100000. Рисунок 5 – Гистограмма, где размерность массива N равна 100000 Рисунок 6 – Полученное математическое ожидание и дисперсия Рассматривая полученные данные (рисунки 5-6) затруднительно сделать вывод о том смог ли зациклиться датчик сложения. Результаты дисперсии и математического ожидания приблизительно равны теоретическим данным. Для более точного анализа работы датчика увеличим размерность последовательности до 1000000. Рисунок 7 – Гистограмма, где размерность массива N равна 1000000 Рисунок 8 – Полученное математическое ожидание и дисперсия Рассматривая полученные данные (рисунки 7-8) можно сделать вывод о том, что датчик сложения не зациклился. Математическое ожидание и дисперсия примерно равны теоретическим и меняются незначительно. В каждый интервал попадает одинаковое количество точек. Листинг датчика на основе алгоритма умножения: x = 565; m = 56238423983; arr = ones; n = 1000; u = 1/m; for i=1:n arr(i+1) = mod(x*arr(i), m); u(i+1) = arr(i+1)/m; end figure histogram(u,n); M = sum(u)/n; disp("M = "); disp(M); Dr = zeros; for i=1:n Dr(i) = (u(i)-M)^2; end D = sum(Dr)/n; disp("D = "); disp(D); Результат работы датчика умножения Для построения гистограммы использовался массив N = 1000 при x = 565, m =56238423983. Рисунок 9 – Гистограмма, где размерность массива N равна 1000 Рисунок 10 – Полученные математическое ожидание и дисперсия Анализируя, гистограмму на рисунке 9 заметим, что при данной размерности массива N невозможно прийти к точному выводу смог ли зациклиться датчик умножения. При этом рассчитанные математическое ожидание и дисперсия приблизительно равны теоретическим, поэтому для более точных результатов следует увеличить размерность N до 100000. Рисунок 11 – Гистограмма, где размерность массива N равна 100000 Рисунок 12 – Полученные математическое ожидание и дисперсия Изучая, гистограмму на рисунке 11 заметим, что при данной размерности массива N можно прийти к выводу, что данный датчик умножения не зациклился. Математическое ожидание и дисперсия примерно равны теоретическим и меняются незначительно. Результат работы датчика, встроенного в Matlab Для построения гистограммы использовался массив N = 1000. Рисунок 13 – Гистограмма размерностью 1000 Рисунок 14 – Математическое ожидание и дисперсия Анализируя, гистограмму на рисунке 13 заметим, что при данной размерности массива N невозможно прийти к точному выводу смог ли зациклиться встроенный датчик rand(n). При этом рассчитанные математическое ожидание и дисперсия приблизительно равны теоретическим, поэтому для более точных результатов следует увеличить размерность N до 10000. Рисунок 15 - Гистограмма размерностью 10000 Рисунок 16 – Математическое ожидание и дисперсия. Анализируя, гистограмму на рисунке 15 заметим, что при данной размерности массива N невозможно прийти к точному выводу смог ли зациклиться встроенный датчик rand(n). При этом рассчитанные математическое ожидание и дисперсия приблизительно равны теоретическим, поэтому для более точных результатов следует увеличить размерность N до 100000. Рисунок 17 - Гистограмма размерностью 100000 Рисунок 18 - Математическое ожидание и дисперсия Изучая, гистограмму на рисунке 17 заметим, что при данной размерности массива N можно прийти к выводу, что данный встроенный датчик rand(n) не зациклился. Математическое ожидание и дисперсия примерно равны теоретическим и меняются незначительно. В каждый интервал попадает одинаковое количество точек. Листинг датчика сложения на новом интервале значений: a = 565; c = 323; m = 56238423983; x = ones; n = 1000; u = 1/m; Num = 24; B = 2.5*Num; g = zeros; for i = 1:n x(i+1) = mod(a*x(i) + c,m); u(i+1) = x(i+1)/m; g(i+1) = Num+(B-Num)*u(i+1); end figure histogram(g,n); M = sum(u)/n; disp("M = "); disp(M); Dr = zeros; for i=1:n Dr(i) = (u(i)-M)^2; end D = sum(Dr)/n; disp("D = "); disp(D); Для построения гистограммы использовался массив N = 1000 при a = 565, c = 323, m = 56238423983 на интервале [24; 60]. Рисунок 19 – Гистограмма, где размерность массива N равна 1000 Рисунок 20 – Полученные математическое ожидание и дисперсия Анализируя, гистограмму на рисунке 19 заметим, что при данной размерности массива N невозможно прийти к точному выводу смог ли зациклиться датчик сложения на новых интервалах. Для более точных результатов следует увеличить размерность N до 10000. Рисунок 21 –Гистограмма, где размерность массива N равна 10000 Рисунок 22 – Полученные математическое ожидание и дисперсия Анализируя, гистограмму на рисунке 21 заметим, что при данной размерности массива N невозможно прийти к точному выводу смог ли зациклиться датчик сложения на новых интервалах. Вывод В ходе выполнения лабораторной работы были изучены методы формирования случайных чисел при помощи различных датчиков псевдослучайных чисел на определенном интервале. Была исследована работа двух алгоритмов формирования случайных чисел: сложения и умножения. В процессе увеличения количества формируемых случайных чисел оба датчика не зацикливаются. Чем больше производится выборка чисел, тем точнее вычисляются математическое ожидание и дисперсия. Это связано с тем, что все точки распределяются равномерно по интервалу случайных чисел. Поэтому эти методы можно назвать псевдослучайными, так как случайные числа, которые они образуют начинают повторяться. Также в ходе выполнения был рассмотрен встроенный датчик rand(n), он также, как и собственные алгоритмы формирования при увеличении количества случайных чисел не зацикливается, что говорит об аналогичном алгоритме генерирования псевдослучайных чисел. При увеличении интервала значений увеличивается математическое ожидание и дисперсия, при этом математическое ожидание становится больше дисперсии, так как при увеличении интервала увеличивается и разброс случайных чисел. Контрольные вопросы к защите 1. Почему нельзя получить последовательность действительно случайных чисел программными методами? На ЭВМ невозможно получить идеальную последовательность случайных чисел т.к. на ней можно оперировать только с конечным множеством чисел. Кроме того, для получения значений x случайной величины ξ используются формулы (алгоритмы). Поэтому такие последовательности, являющиеся по своей сути детерминированными, называются псевдослучайными. 2. На чем основан принцип построения датчика случайных чисел с равномерным распределением? За эталон генератора случайных чисел (ГСЧ) принят такой генератор, который порождает последовательность случайных чисел с равномерным законом распределения в интервале (0; 1). За одно обращение данный генератор возвращает одно случайное число. Если наблюдать такой ГСЧ достаточно длительное время, то окажется, что, например, в каждый из десяти интервалов (0; 0.1), (0.1; 0.2), (0.2; 0.3), …, (0.9; 1) попадет практически одинаковое количество случайных чисел — то есть они будут распределены равномерно по всему интервалу (0; 1). Если изобразить на графике k = 10 интервалов и частоты Ni попаданий в них, то получится экспериментальная кривая плотности распределения случайных чисел. 3. Каким образом достигается распределение значений случайных чисел датчика в интервале значений от 0 до 1? В алгоритме используют два положительных, нечетных целых числа, каждое из которых может содержать до четырех цифр. Первое из этих двух чисел, никогда не меняющее свое значение называется «ядром», второе, изменяющееся — «множителем». Каждый раз, когда надо получить новое случайное число, значение множителя изменяют в соответствии с некоторой последовательностью. Первым шагом алгоритма является умножение ядра на множитель. Непрерывная случайная величина имеет равномерное распределение на отрезке [a,b], если она принимает значения только из этого отрезка, и любое число из этого отрезка не имеет преимущества перед другими числами этого отрезка в смысле возможности быть значением этой случайной величины. 4. Как изменить границы интервала [0,1], например, от n1 до n2, где n – целые или вещественные числа? Изменить границы интервала [0,1] можно при помощи умножения случайной величины на сумму новых интервалов. |