【发布时间】:2011-06-29 21:15:20
【问题描述】:
我需要模拟泊松等待时间。我找到了很多模拟到达数量的例子,但是我需要模拟一个到达的等待时间,给定一个平均等待时间。
我一直在寻找这样的代码:
public int getPoisson(double lambda)
{
double L = Math.exp(-lambda);
double p = 1.0;
int k = 0;
do
{
k++;
p *= rand.nextDouble();
p *= Math.random();
} while (p > L);
return k - 1;
}
但这是到达次数,而不是到达时间。
效率优于准确性,更多是因为功耗而不是时间。我使用的语言是 Java,如果算法只使用 Random 类中可用的方法,那将是最好的,但这不是必需的。
【问题讨论】:
-
最简单的就是模拟inter-arrivals:stackoverflow.com/a/5615564/1650437
-
您肯定应该依赖众所周知的实现。看看这个:http://maths.uncommons.org/api/org/uncommons/maths/random/PoissonGenerator.html.