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

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

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

 
 Ответить  Открыть новую тему 
> Poisson Пуасонновский поток Моделирование систем
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Добрый день! Есть необходимость на Паскале написать входной Пуассоновский поток для системы массового обслуживания. При чем проблема только с ним.
Есть заданая Лямбда, есть написанная функция которрая должна возвращать число сгенерированное по формуле Пуассона - но в формуле есть факториал он должен быть интеджер - а число возвращаемое в диапазоне от 0 до 1 - как быть не пойму. dry.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

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


function blablabla(input: integer): boolean
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Цитата(Krjuger @ 30.03.2012 20:17) *

function blablabla(input: integer): boolean


и что? да я знаю о такой функции - но мне то число нужно по такой формуле в диапазоне от 1 до 0
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

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


Тьфу, я совсем не так понял)))Извиняюсь.
Так насчеем с того,что именно вы считаете?
Вероятность?Если вероятность то чего?Напишите более подробно про вашу задачу.
В общем вот тебе код,который и факториал считает и Пуассоновское распределение.

function fact(x:integer):longint;
begin
if x=0 then fact:=1
else fact:=fact(x-1)*x;
end;

function P( double x; double lambda;n:integer):double;
var
res:double;
begin
res:=Exp(n*Ln(x*lambda))*exp(-lambda*x)/fact(n);
P:=res;
end;

var
x:double;
lambda:double;
n:integer;
res:double;
begin
n:=10;
lambda:=2.7;
x=12.1;
res:=P(x,lambda,n);
writeln(res);
readln;
end.


n-число событий такого потока, выпадающих на интервал х

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





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


мне надо сгенерить чисел по формуле пуассона
и проверить потом действительно ли пуассон
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

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


Вот я выше написал.По x,n от тебе выдает результат,а то что результат всегда будет меньше 1 и больше нуля,это уже само свойство формулы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


вот отличный код как мой good.gif только в него нужно рандом добавить
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

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


Вам нужно сделать рандом от 0 до 1 чтоли?
Тогда добавьте
begin
randomize;//<<<<это
n:=10;
lambda:=2.7;
x=12.1;
res:=P(x,lambda,n);
d:=random;//<<<<это
writeln(res);
readln;
end.
Ну а
дальше делайте,что хотите)
В d будет храниться как раз то самое случайно число,или вам,что то другое надо?)

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





Группа: Пользователи
Сообщений: 5
Пол: Женский

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


Цитата(Krjuger @ 30.03.2012 21:20) *

Вам нужно сделать рандом от 0 до 1 чтоли?
Тогда добавьте

вот у меня есть для Эланга
а надо еще один написать для пуассона что б сам генерил числа штук 300 - 500 чтоб распределение проверить

function Exponential (lambda : real): real;
begin
result := -1/lambda*ln(random);
end;

function Erlang (lambda : real): real;
var i : integer;
begin
result := 0;
for i := 0 to n do
result := result + Exponential(0.25);
end;


begin
for i := 0 to n do
begin
result := Erlang(0.25);
s := Format('%.3f',[result]);
ListBox1.Items.Add(s);
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

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


Я тебя не понимаю, что он должен сгенерировать,по какой переменной изменяться???? по числу положительных исходов?Пиши более развернуто,а то понять,что тебе нужно вообще нереально?Тебе нужно построить график распределения Пуассона для твоих заданных : диапозона и лямбды?Так?
Вот я честно залез на википедию для распределения эрланга я увидел там алгоритм,для пуассона его там нету....
Моделирование значений пуассоновской случайной величины с параметром a основано на предельной теореме, согласно которой распределение биномиальной случайной величины Bn,p при больших n и малых p хорошо аппроксимирует распределение Пуассона с параметром a = np.
Это едитственный спобос как я предполагаю можно проверить пуассоновское распределение.
Все я вьехал,что нужно делать.....
begin
randomize;//<<<<это
d:=random;//<<<<это
n:=10;
k:=0;
lambda:=2.7;
while d>0 do begin
d:=d-P1(lambda,k);
k:=k+1;
end;
k:=k-1;
end.

В итоге в К будет храниться номер интервала содержащего наше случайное d,затем сравним его с величиной P(k,lambda,10) (10 я взял в качестве примера) И по идеи оно должно совпадать.Надеюсь я все правильно понял?

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


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

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


Я понял так, что нужна функция, генерирующая массив (или наподобие) со случаными (псевдослучайными) числами, подчиняющимися пуансоновскому распределению.
Строка в гугле "генерация ПСЧ с распределением пуассона" даёт пару страниц. В частности эту.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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