- •Оглавление
- •Введение.
- •Генерация случайных чисел в matlab.
- •Моделирование распределений случайных величин в matlab.
- •Биномиальное распределение.
- •Гипергеометрическое.
- •Геометрическое.
- •Пуассоновское распределение.
- •Экспоненциальное.
- •Нормальное распределение.
- •Метод Монте-Карло
- •Использование пакета Simulink для моделирования случайных чисел.
- •Программа в matlab
- •Список литературы.
Использование пакета Simulink для моделирования случайных чисел.
Рассмотрим моделирование случайной величины в пакете Simulink на примере моделирования простого события.[5]
Пусть имеется событие А, вероятность наступления которого равна РА. Требуется выработать правило, при многократном использовании которого частота появления события стремилась бы к его вероятности. Выберем с помощью датчика случайных чисел, равномерно распределенных в интервале(0,1), некоторое число z и определим вероятность того, что(формула ( )):
()
Для случайной величины z с равномерным распределением справедлива следующая зависимость z < РА.
Таким образом, вероятность попадания случайной величины в интервал (0,РА) равна величине РА. Поэтому если при розыгрыше число z попало в этот интервал, то следует считать, что событие А произошло. Противоположное событие (не А) произойдет с вероятностью (1 – РА) в том случае, если z > = РА.
Вот как это будет выглядеть в Simulink(Error: Reference source not found):
Рисунок 1
Источник постоянного сигнала Constant-задает постоянный по уровню сигнал (в данном случае задает вероятность наступления события).
Осциллограф Scope-строит графики исследуемых сигналов в функции времени. Позволяет наблюдать за изменениями сигналов в процессе моделирования (в данном случае графически изображает числа, создаваемые генератором случайных чисел).
Цифровой дисплей Display-отображает значение сигнала в виде числа (в данном случае отображает результат сравнения в предыдущем блоке Relational operator).
Блок вычисления операции отношения Relational Operator- блок сравнивает текущие значения входных сигналов.
Блок Uniform Random Number генерирует случайные числа (СЧ), равномерно распределенные на интервале [0;1].
Программа в matlab
Как было сказано в первой главе, генераторы случайных чисел подвергают ряду различных тестов, чтобы убедиться в том, что он качественный. В нашей программе мы ограничимся тестами на погрешность математического ожидания, дисперсии и среднеквадратичного отклонения от теоретических значений этих параметров в равномерном распределении. Тестировать будем генератор rand.
Исходный код программы(скрипт):
clear, clc
n=input('Введите размерность выборки случайных чисел: n= ');
kol=input('Введите количество обращений к функции rand:kol=');
m=0.5;
d = 1/12;
for i=1 : kol
x=rand(n,1);
m1=mean(x);
Disp(i) = abs((var(x)- d)/d)*100;
Og(i) = ((m1-m)/m)*100;
Otk(i) = abs((std(x)- sqrt(1/12))/sqrt(1/12))*100;
end
i=1 : kol;
ok1=figure(1);
set(ok1, 'name', 'Проверка качества генератора rand')
plot(i,Og);
str = '\bf\fontsize{11}\fontname{times}График зависимости погрешности математического ожидания от количества обращений к функции rand';
title(str)
xlabel('\bf\fontsize{11}\fontname{times} Количество обращений')
ylabel('\bf\fontsize{11}\fontname{times} Погрешность')
ok2=figure(2);
set(ok2, 'name', 'Проверка качества генератора rand')
plot(i,Disp);
str = '\bf\fontsize{11}\fontname{times}Зависимости погрешности дисперсии от количества обращений к функции rand';
title(str)
xlabel('\bf\fontsize{11}\fontname{times} Количество обращений')
ylabel('\bf\fontsize{11}\fontname{times} Погрешность')
ok3=figure(3);
set(ok3, 'name', 'Проверка качества генератора rand')
plot(i,Otk);
str = '\bf\fontsize{11}\fontname{times}График зависимости погрешности среднеквадратичного отклонения от количества обращений к функции rand';
title(str)
xlabel('\bf\fontsize{11}\fontname{times} Количество обращений')
ylabel('\bf\fontsize{11}\fontname{times} Погрешность')
Результат выполнения(Рисунок 2)
Рисунок 2