gpt4 book ai didi

java - 在 Java 中生成泊松到达

转载 作者:行者123 更新时间:2023-12-04 00:09:18 26 4
gpt4 key购买 nike

我想在 Java 中创建一个函数,在给定平均到达率 (lambda) 和平均服务率 (mu) 的情况下生成泊松到达。

在我的示例中,我有:2,2 个请求/天,换句话说,2,2 个到达/天和 108 小时的平均服务时间。考虑到我的程序在 t=0 分钟时开始,我想创建一个返回到达 [] 的函数,该函数将包含 t1、t2 和一个可能的 t3。 T1、t2 和 t3 是一天中发生这种到达的时刻(以分钟为单位)。我有以下限制:
t1 < t2 < t3 < 1440 minutes (24 hours*60 minutes/hour)t2-t1 > 108 minutest3-t2 > 108 minutest3+ 108 minutes < 1440 minutes
有人可以帮帮我吗?

谢谢,

安娜

最佳答案

您可以使用 this algorithm proposed by D. Knuth :

private static int getPoissonRandom(double mean) {
Random r = new Random();
double L = Math.exp(-mean);
int k = 0;
double p = 1.0;
do {
p = p * r.nextDouble();
k++;
} while (p > L);
return k - 1;
}

要了解这是如何工作的,请注意在 k 次迭代后,循环条件变为

p1 * p2 * ... * pk > L

这相当于

-ln(p1)/均值 -ln(p2)/均值 ... -ln(pk)/均值 > 1

请注意,如果 p 是均匀分布的,则 -ln(p)/mean 具有给定均值的指数分布。当事件之间的间隔长度是指数分布的独立随机变量时,泊松分布的随机变量等于给定事件在固定间隔内发生的次数。由于我们使用泊松分布的平均值作为事件之间间隔的指数分布的平均值,因此我们计算出现次数的固定内部是单位长度。因此,循环条件将事件之间的间隔长度相加,并检查我们是否超出了单位间隔。如果我们在计算第 k 个事件时超出了单位间隔,则在该间隔内发生了 k-1 个事件,因此我们返回 k-1。

关于java - 在 Java 中生成泊松到达,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com