Мордовский государственный университет имени Н.П. Огарева
Опубликован: 30.11.2010 | Доступ: свободный | Студентов: 3283 / 1985 | Оценка: 4.12 / 4.13 | Длительность: 14:37:00
ISBN: 978-5-9963-0352-6
Лекция 3:

Моделирование непрерывных случайных величин с заданным законом распределения

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

3. Формирование нормально распределенных случайных чисел по методу бокса и маллера

В соответствии с методом Бокса–Маллера случайные числа формируются парами с математическим ожиданием, близким к значению m = 0, и средним квадратическим отклонением, близким к единице, т. е. s = 1:

z_{1}=-2\ell nR_{1}\cos(2\pi R_{2});\qquad z_{2}=-2\ell nR_{1}\sin(2\pi R_{2}),

где R_{1}, R_{2} — случайные числа из интервала (0; 1) с равномерным распределением.

Выборка случайных чисел, сформированная по методу Бокса–Маллера, может центрироваться с целью получения параметров нормального закона практически равным своим теоретическим значениям стандартного нормального закона, т. е. m = 0, s = 1.

Пример 3. Сформируйте N = 500 случайных чисел в соответствии со стандартным нормальным законом.

Программный код решения примера:

clear, clc        
N = 500; 
z1 = -2*log(rand(N,1)).*cos(2*pi*rand(N,1));
z2 = -2*log(rand(N,1)).*sin(2*pi*rand(N,1));
z = sort([z1;z2]);
%-------------- Средняя величина---------------------
mz = sum(z)/(2*N);
fprintf('\n\t m = %g\n',mz)
%-------------- Стандартное отклонение ------------
stz = sqrt(sum((z-mz).^2)/(length(z)-1));
fprintf('\t s = %g\n', stz)
%--------------- Нормализованные данные ----------
zz = (z-mz)/stz;
mzN = sum(zz)/(2*N);
fprintf('\t m = %g\n', mzN)
stzN = sqrt(sum((zz-mzN).^2)/(2*N-1));
fprintf('\t s = %g\n', stzN)

Задание 3

  1. В программе примените циклические операции расчета средних значений и средних квадратических отклонений.
  2. Рассчитайте параметры нормального закона для сформированной выборки случайных чисел с помощью функций mean и std, сравните результаты.
  3. Постройте функцию плотности и функцию распределения для нормализованных данных. Сравните с функциями для данных, получаемых с помощью встроенной функции randn.
  4. Напишите программу формирования выборки случайных чисел, распределенных по нормальному закону в соответствии с методом Марсальи–Брея по следующему алгоритму:
    1. Генерируются два равномерно распределенных случайных числа R1, R2 из интервала [0; 1].
    2. Формируются два соотношения V1= –1 + 2R1, V2= –1 + 2R2.
    3. Составляется сумма S: S = V1^{2} + V2^{2}.
    4. Если S \ge 1, то пп. 1-3 повторяются.
    5. Если S < 1, то вычисляется первая пара случайных чисел t1, t2:
      t1=V1\sqrt{\frac{-2\ell nS}{S}},\qquad t2=V2\sqrt{\frac{-2\ell nS}{S}}

Для выборки случайных чисел, сформированных по методу Марсальи–Брея, рассчитать параметры нормального закона, т. е. математическое ожидание (среднее) и среднее квадратическое отклонение (стандартное отклонение).

Примечание. Для формирования выборки X нормально распределенных случайных чисел с произвольными параметрами m_{x} и s_{x} следует воспользоваться формулой

X=m_x+s_xZ, ( 3.6)

где Z — выборка случайных чисел, распределенных по стандартному нормальному закону, т. е. когда m = 0, s = 1.

4. Формирование выборки случайных чисел, соответствующей нормальному распределению, с помощью центральной предельной теоремы

Известно [20], что сумма n одинаково распределенных независимых случайных величин стремится к нормально распределенной величине при бесконечном увеличении n. Например, можно воспользоваться случайными числами, равномерно распределенными в интервале [0; 1]. В соответствии с центральной предельной теоремой сформированное случайное число является асимптотически нормальной величиной со средним m = n/2 и дисперсией s^2 = n/12. В случае, когда используется какое-либо другое распределение с заданным математическим ожиданием m_x и средним квадратическим отклонением s_x, расчетное математическое ожидание будет равно m = n\cdot m_x и среднее квадратическое отклонение s = s_x\cdot n^{1/2}.

Когда для формирования нормально распределенных случайных чисел суммируются равномерно распределенные случайные величины из интервала [0; 1], то приемлемые результаты в смысле параметров стандартного нормального закона дает формула

X=\sum\limits_{i=1}^{12}r_i-6, ( 3.7)

где r — равномерно распределенное случайное число из интервала [0; 1].

Пример 4. Сформируйте 5000 нормально распределенных чисел в соответствии с центральной предельной теоремой на основе суммирования случайных чисел, равномерно распределенных в интервале [0, 1].

Программный код решения примера:

clear, clc
N = 5000;
for J = 1 : N
X(J) = sum(rand(12,1))-6;
end
X = sort(X);
m = mean(X);
s = std(X);
fprintf('\n\t m = %g\n', m)
fprintf('\t s = %g', s)

Задание 4

  1. Постройте функции плотности и распределения для случайных величин, сформированных по вышеприведенной программе.
  2. Получите выборку случайных чисел со стандартным нормальным распределением при суммировании случайных чисел, распределенных:
    • по экспоненциальному закону,
    • по закону Эрланга 3-го порядка.

    При необходимости произведите центрирование полученных случайных величин.

5. Моделирование нормального закона распределения в системе GPSS/PC

В системе GPSS/PC, как и в других версиях среды GPSS, необходимо обеспечить неотрицательность значений интервалов поступления требований (транзактов) в систему и их задержки (обслуживания). Область определения случайной величины для нормального закона представляет собой всю числовую ось. Поэтому, чтобы обеспечить по возможности только неотрицательные значения случайной величины, необходимо выполнить требование m \ge 5s, где m — математическое ожидание, а s – среднеквадратическое отклонение нормально распределенной случайной величины. Во многих системах программирования имеются генераторы случайных чисел со стандартным нормальным законом распределения, для которого m = 0, s = 1. Но переход к нормальному закону с другими параметрами можно произвести по формуле (3.6). Поэтому в системах GPSS можно использовать стандартный нормальный закон распределения с последующим преобразованием по формуле (3.6).

Пример 5. Выполните моделирование одноканальной системы обслуживания, для которой известно, что поступление требований подчиняется равномерному закону из интервала [10; 16] мин., время обслуживания подчиняется нормальному закону с параметрами m = 18 мин., s = 3 мин. Моделирование произведите по обслуживанию 1000 требований (транзактов).

Для решения примера сначала сформируем в среде MATLAB функцию стандартного нормального закона для области определения от 0 до 30 мин. Затем данные функции распределения и ее аргумента экспортируем в систему GPSS/PC.

MATLAB-программа формирования массива данных для стандартной функции нормального распределения:

X = linspace(-3,3.2, 49);
F = normcdf(X);
%------ Преобразование нормального закона -------------
m = 18; s = 3;
xx = m + s*X;
F2 = [0,F];
X2 = [0, xx];
%%% Заголовок и имя функции для GPSS/PC
fid = fopen('norm.txt', 'w'); %% запись в текстовый файл
fprintf(fid, 'nor function RN6,C50\r\n')
%%% Цикл форматированного вывода данных для GPSS/PC
for J = 1 : length(X2)
if mod(J, 3)
fprintf(fid, '%g,%g/', F2(J), X2(J));
else
fprintf(fid, '\r\n');
fprintf(fid, '%g,%g/', F2(J), X2(J));
end
end
fprintf(fid,';\r\n------------------------------\r\n');
fclose(fid);

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

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

Программный код решения примера в GPSS/PC:

simulate
nor function RN6,C50
0,0/0.0013499,9/
0.00204696,9.3875/0.00305642,9.775/0.00449413,10.1625/
0.00650796,10.55/0.00928214,10.9375/0.0130406,11.325/
0.0180485,11.7125/0.0246108,12.1/0.0330681,12.4875/
0.0437873,12.875/0.0571489,13.2625/0.0735293,13.65/
0.0932785,14.0375/0.116696,14.425/0.144004,14.8125/
0.175324,15.2/0.21065,15.5875/0.249838,15.975/
0.29259,16.3625/0.338461,16.75/0.386865,17.1375/
0.437097,17.525/0.488366,17.9125/0.539828,18.3/

0.59063,18.6875/0.639953,19.075/0.687048,19.4625/
0.731273,19.85/0.772116,20.2375/0.809213,20.625/
0.842351,21.0125/0.871463,21.4/0.896616,21.7875/
0.917988,22.175/0.935849,22.5625/0.950529,22.95/
0.962394,23.3375/0.971826,23.725/0.9792,24.1125/
0.98487,24.5/0.989157,24.8875/0.992346,25.275/
0.994678,25.6625/0.996355,26.05/0.997542,26.4375/
0.998368,26.825/0.998933,27.2125/0.999313,27.6/
;------------------------------
tab1 table mp1,5,2,15
***********************************
10  generate 13,3
20  seize 1
30  mark 1
40  advance fn$nor
50  tabulate tab1
60  release 1
70  terminate 1
start 1000
;end

В программе предусмотрено табулирование времени пребывания транзактов в устройстве обслуживания по стандартному числовому атрибуту mp1, где цифра 1 относится к номеру параметра, через который производится отметка времени блока mark.

На рис. 3.1 приведена гистограмма распределения времени обслуживания. Эта гистограмма может быть получена после запуска программы на исполнение при закомментированном операторе end, и далее с помощью комбинации клавиш Alt+T можно перейти в окно просмотра таблиц.

Гистограмма распределения времени обслуживания

Рис. 3.1. Гистограмма распределения времени обслуживания

Как видно из рис. 3.1, гистограмма имеет форму, близкую к функции плотности нормального закона. Среднее значение времени распределения обслуживания требований в устройстве равно 17.62 ( Mean: 17.62 ), стандартное отклонение равно 3.00 ( S.D.: 3.00 ), что достаточно близко к условию примера.

Задание 5

  1. По файлу стандартного отчета постройте функцию распределения времени обработки транзактов в устройстве. Сравните с той же функцией, построенной в среде MATLAB.
  2. Проанализируйте результаты для разных номеров генераторов случайных чисел в зависимости от номера компьютера: RN1, RN2, … .
  3. Проанализируйте результаты при различных значениях счетчика завершений, т. е. положите start\ 200, start\ 300 и т. д. в зависимости от номера компьютера, за которым выполняется лабораторная работа (1, 2, 3, ...). Графический образ получаемой гистограммы внесите в отчет лабораторной работы.
< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Мария Ястребинская
Мария Ястребинская

Добрый день. Я приступила сегодня к самостоятельному изучению курса "Моделирование систем". Хочу понять - необходимо ли отсылать мои решения практических заданий на сайт, (и если да - то где найти волшебную кнопку "Загрузить...") или практические задания остаются полностью на моей совести? (никто не проверяет, и отчётности по ним я предоставлять не обязана?)

P.S.: тьютора я не брала

алена зянтерекова
алена зянтерекова