我正在開發一個網絡模擬器,其中數據包到達和傳輸嘗試的事件遵循泊松分佈。我有Knuth的算法的改編:Poisson variates,λ和到達率連接,Java網絡模擬
的節點與泊松過程隨機重新安排樓層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);
該模擬器運行理應幾次,以增加負荷,每次測量性能。起初我認爲到達率等於λ,但λ越大,我得到的每秒包數就越少。到達率與λ之間的關係是什麼? 我很抱歉的很長的職位,但我真的很失望搜索大量的大學書籍和互聯網沒有一個有效的網絡仿真源...
在此先感謝您的幫助。
並且有人說Java沒有lambda表達式。 –