Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При разработке систем моделирования очень часто возникает необходимость создания процессов в случайные моменты времени, для задания различного рода случайных факторов при имитационном моделировании определен набор встроенных процедур, позволяющих задавать получение псевдослучайных чисел, распределенных по любому нужному закону.
Все процедуры случайной выборки в языке СИМУЛА
используют один и тот же прием получения «главной выборки» из равномерного распределения на интервале (0,1). Процедура главной выборки заменяет значение указанной целой переменной новым значением в соответствии с некоторым алгоритмом, определяемым в реализации языка (см. приложение 1).
Каждая из перечисленных далее процедур осуществляет случайный выбор того или иного рода. Если явно не указано, выбор выполняется посредством одной процедуры главной выборки, т. е. процедуры с побочным эффектом продвижения на один шаг по указанной последовательности псевдослучайных чисел.
Для формальных параметров процедур случайного выбора в случае
необходимости выполняется преобразование типа фактических параметров,
кроме последнего фактического параметра, которым всегда должна быть переменная типа integer, указывающая последовательность псевдослучайных чисел.
Рассмотрим эти процедуры:
1. Процедура psrand (u).
real procedure psrand (u); name u; integer u;
Данная процедура предназначена для получения последовательностей псевдослучайных чисел, равномерно распределенных на интервале [0,1]. При многократной обращении к данной процедуре будет выдаваться последовательность а1, а2, …, аn, …, которая однозначно определяется начальным значением переменной u. Данная процедура называется процедурой главной выборки, с ее помощью получают все остальные распределения.
2. Процедура draw (a,u).
Boolean procedure draw (a, u); name u; real a; integer u;
Эта процедура доставляет значение true с вероятностью а и значение false с вероятностью (1-а), при а=>1 всегда доставляется true, а при a<=0 – false.
3. Процедура randint (a,b,u).
integer procedure randint (a, b, u); name u; integer a, b, u;
Процедура доставляет с равной вероятностью одно из целых значений: а, а + 1,..., b - 1, b. Предполагается, что b >= а, при b < а выдается сообщение об ошибке.
4. Процедура uniform (a,b,u).
real procedure uniform (a, b, u); name u; real a, b; integer u;
Процедура доставляет значение, равномерно распределенное по полусегменту [а, b). При b < а выдается сообщение об ошибке.
5. Процедура normal (a,b,u).
real procedure normal (a, b, u); name u; real a, b; integer u;
С помощью этой процедуры можно получать псевдослучайные числа, распределенные по нормальному закону с математическим ожиданием а и среднеквадратическим отклонением b.
6. Процедура negexp (a,u).
real procedure negexp (a, u); name u; real a; integer u;
Процедура доставляет значения, распределенные по экспоненциальному закону со средним a.
7. Процедура Poisson (a,u).
integer procedure Poisson (a, u); name u; real a; integer u;
Значениями этой процедуры являются целые числа, распределенные по закону Пуассона с параметром a.
8. Процедура Erlang (a, b, u).
real procedure Erlang (a, b, u); name u; integer u; real a, b;
Доставляет значение, распределенное по закону Эрланга со средним 1/а и стандартным отклонением l/(a*sqrt(b)).
Для облегчения программирования типовых примеров статистического анализа результатов моделирования в языке имеются две встроенные процедуры, позволяющие накапливать гистограммы значений случайных величии в ходе работы модели интегрирование по системному времени.
Для накопления гистограмм служит процедура histo (A,B,c,d)
procedure histo (A, В, с, d); array A, В; real с, d;
где A,B – одномерные массивы арифметического типа, задающие гистограмму, c – наблюдаемое значение некоторой арифметической величины, для которой строится гистограмма, d – арифметическая величина, равная весу значения с.
Значения элементов массива В трактуются как правые границы интервалов аргумента гистограммы, а в массиве А накапливаются данные о попаданиях исследуемой величины в заданные интервалы. Количество элементов в массиве А должно быть на 1 больше, чем в массиве В.
Встроенная процедура accum (a, b, c, d)
procedure accum (a, b, с, d); name a, b, с; real a, b, c, d;
может использоваться для накопления в переменной а интеграла по системному времени от переменной с, параметр b используется для фиксации момента времени, когда значения а и с обновляются в последний раз, а формальный параметр d трактуется как приращение переменной со времени ее предыдущего приращения.
Дата публикования: 2015-01-23; Прочитано: 226 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!