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

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

2 ответа

Используйте GSL, Научную библиотеку Гну. Есть функция gsl_ran_poisson:

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

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

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

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

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

Другие вопросы по тегам