|
Добрый день. Я приступила сегодня к самостоятельному изучению курса "Моделирование систем". Хочу понять - необходимо ли отсылать мои решения практических заданий на сайт, (и если да - то где найти волшебную кнопку "Загрузить...") или практические задания остаются полностью на моей совести? (никто не проверяет, и отчётности по ним я предоставлять не обязана?) P.S.: тьютора я не брала |
Исследование качества генераторов случайных чисел
Теоретическая часть
В практике моделирования и особенно в практике статистических испытаний приходится использовать случайные последовательности или просто случайные числа. При моделировании систем на ЭВМ программная имитация случайных воздействий любой сложности сводится к генерированию некоторых стандартных (базовых) процессов и к их последующему функциональному преобразованию. Получение случайных чисел с требуемым законом распределения обычно выполняется в два этапа:
- Формирование физическим или программным методом случайного числа
, равномерно распределенного на
- Программный переход от
к случайному числу
, имеющему требуемое распределение
[16].
В связи с этим особое значение приобретают случайные числа, равномерно распределенные в интервале
. Например, генерирование экспоненциально распределенных случайных чисел
может быть выполнено по формуле

где:
— параметр экспоненциального закона;
— равномерно распределенное случайное число из интервала
.
Существуют физические и программные датчики (генераторы) случайных чисел. Программные датчики случайных чисел фактически генерируют псевдослучайные числа. Согласно Лемеру, последовательность псевдослучайных чисел можно считать случайной, если "каждый ее член непредсказуем для непосвященного и она удовлетворяет ряду традиционных статистических тестов".
Полученные с помощью программных методов случайные последовательности в идеале должны состоять из:
- равномерно распределенных,
- статистически независимых,
- воспроизводимых,
- неповторяющихся чисел.
Практическая часть
1. Исследование качества генераторов случайных чисел (ГСЧ) по критерию отклонения математического ожидания, дисперсии среднего квадратического отклонения
Известно, что при равномерном законе распределения случайной непрерывной величины в интервале
соответствующее математическое ожидание
, дисперсия
и среднеквадратичное отклонение
имеют следующие теоретические значения:
;
;
(
).
Критерий заключается в сравнении теоретических параметров равномерного распределения с реальными значениями, полученными для конечной выборки.
1.1. Анализ качества ГСЧ системы MATLAB
В системе MATLAB всех версий используется функция
, реализующая равномерно распределенные числа в интервале
.
Среднее значение массива чисел определяется функцией
, дисперсия — функцией
, среднее квадратическое отклонение (стандартное отклонение) — функцией
(см.
).
Программный код анализа случайных чисел:
clear, clc
%% Генерирование выборки 500 случайных чисел
x = rand(500, 1);
%% Вычисление среднего значения выборки
m1 = mean(x)
%% Вычисление дисперсии данной выборки
s2 = var(x)
%% Вычисление среднего квадратического отклонения
s = std(x)
%% Расчет относительных погрешностей в процентах
%% по математическому ожиданию
m = 0.5;
Dm = abs((mean(x)- m)/m)*100;
fprintf('\n Относительная погрешность по математическому ожиданию: %g%%\n', Dm);
%% по дисперсии
d = 1/12;
Dd = abs((var(x)- d)/d)*100;
fprintf(' Относительная погрешность по дисперсии: %g%%\n', Dd);
%% по среднему квадратическому отклонению
sd = sqrt(d);
Ds = abs((std(x)- sqrt(1/12))/sqrt(1/12))*100;
fprintf(' Относительная погрешность по стандартному отклонению: %g%%\n', Ds);
%% Генерирование дополнительной выборки
y = rand(500, 1);
%% Диаграмма оценки равномерности случайных чисел
fig1 = figure(1);
set(fig1, 'name', 'Случайные числа функции rand')
plot(x,y,'o', 'markersize', 4);
str = '\bf\fontsize{11}\fontname{times}Проверка на равномерность случайных чисел';
title(str)
xlabel('\bf\fontsize{11}\fontname{times} Random numbers')
ylabel('\bf\fontsize{11}\fontname{times} Random numbers')В программе выполняется построение диаграммы визуальной оценки равномерности случайных чисел. Числа-кружочки на диаграмме должны равномерно заполнить квадрат со стороной, равной единице. На рис. 5.1 приведен пример проверки случайной последовательности на равномерность распределения в интервале
.
Задание 1
-
Проведите в зависимости от номера компьютера статистическое исследование функции
при различных объемах выборки: малых
; средних
; больших
. Результаты испытаний усредните.Компьютер № 1: 11 испытаний (n: 24, 142, 600); Компьютер № 2: 12 испытаний (n: 22, 144, 650); Компьютер № 3: 13 испытаний (n: 20, 146, 700); Компьютер № 4: 14 испытаний (n: 18, 148, 750); Компьютер № 5: 15 испытаний (n: 16, 150, 800); Компьютер № 6: 16 испытаний (n: 14, 152, 850); Компьютер № 7: 17 испытаний (n: 12, 154, 900); Компьютер № 8: 18 испытаний (n: 10, 156, 950); Компьютер № 9: 19 испытаний (n: 19, 149,1000). Компьютер № 10: 20 испытаний (n: 20, 150, 1010).
- Постройте график изменения относительных погрешностей среднего, дисперсии, стандартного отклонения от числа испытаний.
- Пункт 1 задания выполните для выборок, сформированных в системах EXCEL, DELPHI (консольное приложение), PASCAL, С, GPSS/PC. Сформированные выборки импортируйте в MATLAB, где произведите необходимый анализ. Формирование выборки случайных чисел в GPSS/PC выполните по номеру датчика случайных чисел, который соответствует номеру компьютера (
.). - Постройте гистограммы в системе MATLAB для сформированных выборок (полученных в различных системах) с помощью графической функции
(см.
).
Примечание. В системе GPSS/PC сформируйте выборки только малых и средних объемов (в соответствии с номером компьютера).
1. Для фиксации случайных чисел в GPSS/PC можно использовать операторы
,
и блок
.
1.2. Исследование качества ГСЧ, сформированного по методу Фибоначчи
Генератор случайных чисел, использующий метод Фибоначчи, применялся в начале 50-х годов ХХ века [9]. Рекуррентное соотношение Фибонначи имеет вид
,
где:
— целые числа, лежащие между нулем и некоторым большим числом
, который называется модулем;
— порядковый номер числа [9].
Для получения случайных чисел
из интервала
следует вычислить дробь

Программный код формирования случайных чисел по методу Фибоначчи:
clear,clc,close all
N = 500; %% количество генерируемых чисел
M = 2^30; %% модуль
%% 1-я последовательность случайных чисел
X0 = 12345; %% 1-е произвольное число
X1 = 67890; %% 2-е произвольное число
for n = 1 : N
X = mod( X1 + X0, M); %% следующее число
X0 = X1;
X1 = X;
Zx(n,1) = X;
end
Rx = Zx/M;
mf = mean(Rx);
fprintf('\n Среднее выборочное для метода Фибоначчи: %g%%\n', mf);
sf2 = var(Rx);
fprintf(' Выборочная дисперсия для метода Фибоначчи: %g%%\n', sf2);
sf = std(Rx);
fprintf(' Выборочное стандартное отклонение: %g%%\n', sf);
%% Расчет относительных погрешностей в процентах
m = 0.5;
fprintf('\n Относительная погрешность по математическому ожиданию: %g%%\n', abs((mf - m)/m)*100);
d = 1/12;
fprintf(' Относительная погрешность по дисперсии: %g%%\n', abs((sf2 - d)/d)*100);
%% по среднему квадратическому отклонению
sd = sqrt(d);
fprintf(' Относительная погрешность по стандартному отклонению: %g%%\n', abs((sf - sd)/sd)*100);
%% 2-я последовательность случайных чисел
Y0 = 333; %% 1-е произвольное число
Y1 = 123; %% 1-е произвольное число
for n = 1 : N
Y = mod( Y1 + Y0, M); %% следующее число
Y0 = Y1;
Y1 = Y;
Zy(n,1) = Y;
end
Ry = Zy/M;
%% Диаграмма оценки равномерности случайных чисел
fig2 = figure(2);
set(fig2, 'name', 'Случайные числа Фибоначчи')
plot(Rx,Ry,'o', 'markersize', 4);
str = '\bf\fontsize{11}\fontname{times}Проверка на равномерность случайных чисел';
title(str)
xlabel('\bf\fontsize{11}\fontname{times} Random numbers')
ylabel('\bf\fontsize{11}\fontname{times} Random numbers')Пример выполнения программы (без диаграммы)
Среднее выборочное для метода Фибоначчи: 0.49687% Выборочная дисперсия для метода Фибоначчи: 0.0861675% Выборочное стандартное отклонение: 0.293543% Относительная погрешность по математическому ожиданию: 0.626048% Относительная погрешность по дисперсии: 3.40103% Относительная погрешность по стандартному отклонению: 1.6863%
Задание 2
- Напишите программу формирования простых трехзначных чисел с целью их использования в качестве начальных чисел в методе Фибоначчи. Рассчитайте относительные погрешности по математическому ожиданию, дисперсии, стандартному отклонению.
- Напишите программу формирования случайных чисел Фибоначчи без вспомогательных массивов
и
. - Постройте гистограммы в системе MATLAB для сформированных выборок (
и
) с помощью графической функции
(см.
) с разбивкой графического окна с помощью функции
(см.
).
1.3. Исследование качества ГСЧ, сформированного по методу срединных квадратов
Метод срединных квадратов был предложен Нейманом [19] и заключается в следующем: выбирается число, меньшее 1, разрядностью
. Оно возводится в квадрат. Из полученного результата (разрядность которого должна быть
, если нет, то добавляются нули справа от полученного числа) выбираются
чисел из середины полученного после возведения в квадрат числа. Число записывается после десятичной точки. Далее все повторяется.
Для примера выберем 4-разрядное (
) число
. После возведения в квадрат получим число, равное 0.01522756. Из него выбираем четыре срединные цифры, т. е. 5227. Получаем новое случайное (псевдослучайное) число
. Описанные действия отобразим в следующем виде:

и так далее.
Задание 3
- Напишите программу формирования случайных чисел по методу срединных.
- Начальное число выберите (по указанию преподавателя) из следующего списка, приведенного в таблице 5.1.
| Варианты заданий для метода срединных квадратов | |
| № 1 |
; ; ; ; ; ; ; ; ;
|
| № 2 |
; ; ; ; ; ; ; ; ;
|
| № 3 |
; ; ; ; ; ; ; ; ;
|
| № 4 |
; ; ; ; ; ; ; ; ;
|
Примечание. Для проверки периодичности (непериодичности) формируемой случайной последовательности можно применить, например, функцию
(см.
).
- Проведите, в зависимости от номера компьютера, статистическое исследование ГСЧ (вычисление среднего значения выборки, дисперсии, стандартного отклонения выборки) при различных объемах выборки: малых
, средних
, больших
. Результаты испытаний усредните и сравните с аналогичными результатами, которые проведены для выборки, сформированной с помощью функции rand системы MATLAB.Компьютер № 1: (объем выборки: 24, 142, 600); Компьютер № 2: (объем выборки: 22, 144, 650); Компьютер № 3: (объем выборки: 20, 146, 700); Компьютер № 4: (объем выборки: 18, 148, 750); Компьютер № 5: (объем выборки: 16, 150, 800); Компьютер № 6: (объем выборки: 14, 152, 850); Компьютер № 7: (объем выборки: 12, 154, 900); Компьютер № 8: (объем выборки: 10, 156, 950); Компьютер № 9: (объем выборки: 17, 157, 999); Компьютер № 10: (объем выборки: 19, 158, 1010).
- Постройте в системе MATLAB гистограммы для сформированных выборок случайных чисел по методу срединных квадратов и сравните с гистограммой для выборок, сформированных с помощью функции
системы MATLAB. - Постройте гистограммы для сформированных выборок.
- Постройте диаграмму визуального контроля равномерного заполнения квадрата со стороной, равной единице.

;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;