Мне нужно написать программу на C для преобразования равномерного распределения случайных чисел (скажем, от 0 до 1) в распределение Пуассона. Кто-нибудь может помочь?
Преобразование равномерного распределения в распределение Пуассона
Ответы (2)
Используйте GSL, научную библиотеку Gnu. Существует функция под названием gsl_ran_poisson:
Эта функция возвращает случайное целое число из распределения Пуассона со средним значением mu. Распределение вероятностей для переменных Пуассона: p (k) = {\ mu ^ k \ over k!} \ exp (- \ mu) для k >= 0.
В противном случае посмотрите на код и скопируйте идеи.
Я предполагаю, что вы хотите написать программу на C, которая может выбрать случайное число из распределения Пуассона, учитывая случайное число в U (0,1).
Как правило, это делается путем взятия обратного CDF числа из U (0,1). Для дискретных распределений, таких как распределение Пуассона, сначала его преобразуют в непрерывное распределение, предполагая, что функция CDF является гладкой между целыми точками, а затем мы применяем соответствующие приближения (функция пола).
Книга Численные рецепты в C++ (3-е изд.) содержит полное объяснение и код C++. раздел 7.3.12, стр. 372.