我正在开发一个网络模拟器,其中数据包到达和传输尝试的事件遵循泊松分布。我有一个 Knuth 算法的改编版:
public class Poisson {
private double λ;
private Random rand;
/** Creates a variable with a given mean. */
public Poisson(double λ) {
this.λ = λ;
rand = new Random();
}
public int next() {
double L = Math.exp(-λ);
double p = 1.0;
int k = 0;
do {
k++;
p *= rand.nextDouble();
} while (p > L);
return k - 1;
}
}
我的规格说明节点使用泊松过程随机重新安排楼层。平均到达间隔时间呈指数分布,平均 Ts = 2.5ms。我使用 λ = 2.5 是否正确?
当我想做一个新的到达事件时,我会做类似的事情:
Event evt = new Event(EventType.ARRIVAL_EVENT,
MasterClock.getTime + poisson.next());
eventList.add(evt);
据说模拟器运行了几次,每次都增加负载以测量性能。起初我认为到达率等于 λ,但 λ 越大,每秒收到的数据包越少。到达率和λ有什么关系?我很抱歉这篇很长的帖子,但我真的很沮丧,因为在没有有效的网络模拟来源的情况下搜索大量大学书籍和整个互联网......
预先感谢您的帮助。