|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Evgenij Masherov 2:5020/175.2 14 May 2001 16:10:21 To : Alex Baskakov Subject : теория вероятности -------------------------------------------------------------------------------- Sun May 14 2000 22:15, Alex Baskakov wrote to All: AB> Как сгенерировать некое случайное событие по экспоненциальному AB> (показательному) закону распределния, если известно что оно во времени в AB> среднем повторяется через 50 минут? AB> Пусть плотность распределния f(x)=k*exp(-k*x); AB> Функция распределения F(x)=1-exp(-k*x); AB> Тогда матожидание M=50, M=1/k -> k=1/50; AB> Имеем некий масштаб времени в минутах: AB> for(minutes=0; minutes<MAXMINUTES; minutes++) { AB> // ??? AB> } AB> Что вставить? Hаверное надо как-то через квази-равномерное rand() AB> распределние? :) Подскажите плиз. :) AB> Может быть так: AB> double F(int x) { AB> return 1-exp(-k*x); AB> } AB> for(x=0; x<MAXMINUTES; x++) { AB> if (rand()/32767.0<F(x)) { AB> generate(); AB> x=0; AB> } AB> } Чтобы получить экспоненциально распределенное X, имея равномерно распределенное (0;1) число U, нужно вычислить X=-ln(U), а чтобы от числа со средним 1 перейти к числу со средним К, надо на К умножить. (Д.Кнут, т. 2, с. 141-143) Евгений Машеров АКА СанитарЖеня --- ifmail v.2.15 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/3300bff2cb42.html, оценка из 5, голосов 10
|