我实现了这个函数来生成一个泊松随机变量
typedef long unsigned int luint;
luint poisson(luint lambda) {
double L = exp(-double(lambda));
luint k = 0;
double p = 1;
do {
k++;
p *= mrand.rand();
} while( p > L);
return (k-1);
}
其中 mrand 是 MersenneTwister 随机数生成器。我发现,当我增加 lambda 时,预期的分布将是错误的,平均值在 750 左右饱和。是由于数值近似还是我犯了任何错误?