![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Jill |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Не посылайте в FAQ, плз. Я там была. Конкретно по этой теме там пару слов
![]() Только начала разбираться, и уже появилось несколько камней преткновения. Условие. Необходимо создать СМО с ожиданием из 10 элементов, где: - время прибытия и время обслуживания - случайные числа с нормальным распределением (просто random не подходит) - остальные компоненты просчитываются, но об этом позже - соблюдается принцип очереди FIFO в динамике Код (это не все, только то, что вызывает вопросы): type Вопросы: 1. Во всех алгоритмах норм.распределения генерируемые числа - вещественные, а мне необходимы целые. Плюс - числа должны быть >=0. Как грамотно их преобразовать? 2. В первой колонке сформированых чисел, по-моему, должен быть порядок - этот пришел в 0-ой момент времени, этот в 1-ый и т.д. Во второй - упорядочивание не должно проводиться. Как разобраться с этим? 3. Во второй колонке не должен попадаться 0 (время обслуживания не может быть таковым). Достаточно ли просто прибавить 1? И самый главный вопрос. После прогона получаются ОДИНАКОВЫЕ наборы чисел! Мне необходимо отразить результаты нескольких прогонов, а какой с них толк, если они одинаковые! Помогите разобраться ![]() Сообщение отредактировано: volvo - 3.11.2006 19:55 |
![]() ![]() |
Бродяжник |
![]()
Сообщение
#2
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если идет речь о нормально распределенных случайных числах, то они ведь распределены на каком-то интервале, верно?
Итак, имеем Fi - очередное сгенерированное Вашей функцией вещественное случайное число. Видимо, оно будет в интервале от 0 до 1? Или, в общем случае, от F1 до F2. TPi - очередное время прибытия. Тоже, надо полагать в некотором интервале - от TP1 до ТP2. TOi - очередное время обслуживания. В некотором интервале - от TО1 до ТО2. Тогда Код TPi := TP1 + (TP2-TP1)*(Fi-F1)/(F2-F1); TOi := TO1 + (TO2-TO1)*(Fi-F1)/(F2-F1); Если Fi лежит в интервале от 0 до 1, тогда формулы упрощаются. Код TPi := TP1 + (TP2-TP1)*Fi; TOi := TO1 + (TO2-TO1)*Fi; Если нужны именно целые числа (integer), то результат вычислений округляем (TPi := round(...)). По поводу наборов чисел. Поскольку Ваша функция случайных чисел использует стандартный random, то перед каждым прогоном один раз вызываем процедуру randomize - и будет счастье. |
Jill |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 105 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Так, с этим разобралась
![]() ![]() Кст, отдельное спасибо за randomize - вылетело из головы ![]() Тут другой вопрос возник. Динамика. Что-то я с ней никак подружиться не могу ![]() Как грамотно при закрытии проги уничтожать очередь, чтоб мусора не оставалось? Сообщение отредактировано: Jill - 27.07.2006 11:36 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:00 |