СИМУЛА - универсальный процессо-ориентированный язык моделирования, страница 14

2. Процедура draw (a,u).

Boolean procedure draw (a, u);  name u; real a; integer u;

Эта процедура доставляет значение trueс вероятностью а и значение false с вероятностью (1-а), при  а=>1 всегда доставляется true,  а при a<=0false.

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  ureal   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 трактуется как приращение переменной со времени ее предыдущего приращения.

Общая структура программы моделирования

Описание модели в языке Симула оформляется в виде блока с префиксом SIMULATION. Типичная структура программы моделирования приведена ниже:

begin

<описание глобальных переменных, массивов, процедур>;

          <задание значений глобальных переменных>;

simulation

begin

<описание переменных, массивов, общих для всех процедур>;

<декларации классов, определяющие процессы, используемые в модели>;

<процедуры, доступные всем объектам модели>;

<операторы, задающие начальные значения общим переменным и массивам>;

<операторы генерации процессов и объектов, отображающих исходное состояние моделируемой системы>;

<начальная активизация процессов и задание условий окончания моделирования>;

<вывод результатов работы модели>;

       endблока simulation;

<продолжение программы>;

endпрограммы