Преобразование равномерного распределения в распределение Пуассона

Мне нужно написать программу на C для преобразования равномерного распределения случайных чисел (скажем, от 0 до 1) в распределение Пуассона. Кто-нибудь может помочь?


person wiseindy    schedule 13.09.2013    source источник
comment
Вы ограничены одной униформой, то есть инверсией, или разрешено несколько букв U? Ваша формулировка звучит так, будто вы хотите один, но единственные известные мне методы Пуассона требуют нескольких U.   -  person pjs    schedule 13.09.2013


Ответы (2)


Используйте GSL, научную библиотеку Gnu. Существует функция под названием gsl_ran_poisson:

Эта функция возвращает случайное целое число из распределения Пуассона со средним значением mu. Распределение вероятностей для переменных Пуассона: p (k) = {\ mu ^ k \ over k!} \ exp (- \ mu) для k >= 0.

В противном случае посмотрите на код и скопируйте идеи.

person dan3    schedule 13.09.2013

Я предполагаю, что вы хотите написать программу на C, которая может выбрать случайное число из распределения Пуассона, учитывая случайное число в U (0,1).

Как правило, это делается путем взятия обратного CDF числа из U (0,1). Для дискретных распределений, таких как распределение Пуассона, сначала его преобразуют в непрерывное распределение, предполагая, что функция CDF является гладкой между целыми точками, а затем мы применяем соответствующие приближения (функция пола).

Книга Численные рецепты в C++ (3-е изд.) содержит полное объяснение и код C++. раздел 7.3.12, стр. 372.

person Soumendra    schedule 13.09.2013