C中泊松分布的计算

我需要一个C函数来计算k值高达720的泊松分布。我需要一个高效的解决方案。

试一试GSL : gsl_ran_poisson_pdf

泊松随机发生器

 int poissonRandom(double expectedValue) { int n = 0; //counter of iteration double limit; double x; //pseudo random number limit = exp(-expectedValue); x = rand() / INT_MAX; while (x > limit) { n++; x *= rand() / INT_MAX; } return n; } 

我想我的紧急需求已经很晚了。

如果你想自己计算它而不是使用库你可以使用公式计算它… e ^ k * e ^( – lambda)/ k!
你可以使用log(n!)= log(n)+ log(n-1!)和动态编程

我想这对于原始请求来说已经太迟了,但我认为一些答案忽略了这一点 – 我不认为他想从分发中生成随机数,但是想要分发本身。 这是一个function,可以避免计算可能变大的因子。

 double poisson( int k, double mean ) { double p = std::exp(-mean); double f = 1; for ( int i=0 ; i