作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要模拟泊松等待时间。我发现了很多模拟到达次数的例子,但我需要模拟一次到达的等待时间,给定平均等待时间。
我一直在寻找这样的代码:
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 类中可用的方法,那将是最好的,但这不是必需的。
最佳答案
到达时间间隔呈指数分布,您可以使用以下公式生成随机变量X~exp(lambda)
:
-ln(U)/lambda` (where U~Uniform[0,1]).
有关 generating exponential variable 的更多信息.
请注意,到达之间的时间也与第一次到达之前的时间相匹配,因为指数分布是 memoryless .
关于java - 模拟泊松等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6527345/
我是一名优秀的程序员,十分优秀!