IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> СМО с ожиданием, нормальное распределение, динамика ets
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


Не посылайте в FAQ, плз. Я там была. Конкретно по этой теме там пару слов wink.gif

Только начала разбираться, и уже появилось несколько камней преткновения.

Условие. Необходимо создать СМО с ожиданием из 10 элементов, где:
- время прибытия и время обслуживания - случайные числа с нормальным распределением (просто random не подходит)
- остальные компоненты просчитываются, но об этом позже
- соблюдается принцип очереди FIFO в динамике

Код (это не все, только то, что вызывает вопросы):
type
TPClient=^TClient; {описание элементов очереди}
TClient=record
t1:real; {время прибытия}
t2:real; {время ожидания}
next:TPClient;
end;
var
head,node:TPClient;
naf: boolean;
nay: real;
{процедура вывода на экран}
procedure Print1;
var
curr:TPClient;
n:integer;
begin
curr:=head;
while (curr<>NIL)do
begin
writeln(curr^.t1,' ',curr^.t2);
curr:=curr^.next;
end;
end;
{функция генерирования случайных чисел по закону норм.распределения}
function nrandom:real; {вопрос 1}
var u1,u2:real;
begin
naf:=not naf; if naf then nrandom:=nay
else begin
repeat
u1:=random;
until u1>0;
u1:=sqrt(-2*ln(u1));
u2:=random*pi*2;
nay:=u1*cos(u2);
nrandom:=u1*sin(u2);
end;
end;
{создание очереди}
procedure Queure;
var
node:TPClient;
curr:TPClient;
pred:TPClient;
n:integer;
begin
n:=0;
naf:=true;
while n<10 do begin
new(node);
node^.t1:=nrandom;
node^.t2:=nrandom; {вопрос 3}
curr:=head;
pred:=NIL;
while (curr<>NIL) and (node^.t1>curr^.t1) do {вопрос 2}
begin
pred:=curr;
curr:=curr^.next;
end;
if pred=NIL
then
begin
node^.next:=head;
head:=node;
end
else
begin
node^.next:=pred^.next;
pred^.next:=node;
end;
n:=n+1; end;
end;

begin
Queure;
Print1;
readln;
end.

Вопросы:
1. Во всех алгоритмах норм.распределения генерируемые числа - вещественные, а мне необходимы целые. Плюс - числа должны быть >=0. Как грамотно их преобразовать?
2. В первой колонке сформированых чисел, по-моему, должен быть порядок - этот пришел в 0-ой момент времени, этот в 1-ый и т.д. Во второй - упорядочивание не должно проводиться. Как разобраться с этим?
3. Во второй колонке не должен попадаться 0 (время обслуживания не может быть таковым). Достаточно ли просто прибавить 1?
И самый главный вопрос. После прогона получаются ОДИНАКОВЫЕ наборы чисел! Мне необходимо отразить результаты нескольких прогонов, а какой с них толк, если они одинаковые!

Помогите разобраться unsure.gif

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 17:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name