%***************************************************
% Функция для генерирования экспоненциально
% распределенной случайной величины
% Входные параметры:
% stream - номер нужного потока
% mean - среднее значение генерируемой
% случайной величины
% Выходные параметры:
% result - случ. число с эксп. распределением
% из потока stream
%***************************************************
result = -mean * log(lcgrand(stream));
Для 1000 чисел, сгенерированных функцией expon с параметрами stream=1 и mean=0.8, получили:
Математическое ожидание: 0.82579
Дисперсия: 1.6059
Графики плотности и распределения вероятности, а также корреляционный график, представлены на рисунках 1.1, 1.2, 1.3 соответственно.

Рис.
1.1. График плотности вероятности ![]()

Рис.
1.2. График распределения вероятности ![]()

Рис.
1.3. Корреляционный график ![]()
1.3 Построение генератора дискретных случайных чисел, распределенных равномерно
Для генерирования дискретных случайных чисел с равномерным распределением используется функция lcgrand. Алгоритм представляет собой метод обратного преобразования:
1)
Генерируем
.
2) Возвращаем
, где i и j – минимальное
и максимальное дискретные значения.
Листинг 1.2. Код на языке Matlab функции discrand
function [result] = discrand(stream, first, last)
%***************************************************
% Функция для генерирования равномерно
% распределенной дискретной случайной величины
% Входные параметры:
% stream - номер нужного потока
% first - наименьшее значение генерируемой
% случайной величины
% last - наибольшее значение генерируемой
% случайной величины
% Выходные параметры:
% result - дискретное случ. число с равномерным
% распределением из потока stream и
% интервала [first, last]
%***************************************************
U = lcgrand(stream);
result = first + floor((last-first+1) * U);
1.4 Построение генератора случайных чисел u(0, 1), распределенных равномерно
Для генерирования случайных чисел с равномерным
распределением используется функция lcgrand. Данная
функция - мультипликативный линейный конгруэнтный генератор с простым модулем,
заданный формулой
(листинг 1.3).
Листинг 1.3. Код на языке Matlab функции lcgrand
function [u] = lcgrand(stream)
%***************************************************
% Мультипликативный линейный конгруэнтный
% генератор случайного числа с простым
% модулем. Поддерживает множественные потоки (3)
% Входные параметры:
% stream - номер нужного потока
% Выходные параметры:
% u - случ. число из интервала (0, 1)
% в потоке stream
%***************************************************
global Z;
if isempty(Z)
Z = [640690903, 1774806513, 2132545692];
end;
Z(stream) = mod( 630360016*Z(stream), 2^31-1);
u = Z(stream)/(2^31);
§2. ЛОГИКА ПРОГРАММЫ.
ИНТЕРФЕЙС
2.1 Алгоритм работы программы
Алгоритм функционирования программы построен на реализации дискретно-событийной имитационной модели, которая использует механизм продвижения времени от события к событию.
Программа содержит следующие компоненты (рисунок 2.1):
· состояние системы — совокупность переменных состояния, необходимых для описания системы в определенный момент времени;
· часы модельного времени — переменная, указывающая текущее значение модельного времени;
· список событий — список, содержащий время возникновения каждого последующего типа событий
Типы событий:
1 – Поступление требования
2 – Уход требования (освобождение какого-либо устройства)
3 – Конец моделирования
· статистические счетчики — переменные, предназначенные для хранения статистической информации о характеристике системы;
· программа инициализации — подпрограмма, устанавливающая в исходное состояние имитационную модель в момент времени, равный 0;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.