こんにちは、いくつかのジョブ スケジューリング アルゴリズムをシミュレートしようとしています。リクエストのポアソン到着関数を作成しようとしています。ウィキペディアでポアソン到着のアルゴリズムを見つけ、それを実装して実行しましたが、常に同じ結果が得られます(例 l=15 -> 14 を返し、 l=1/15 は 0 を返します)
#include <cmath>
#include <iostream>
#include <cstdlib>
using namespace std;
main (){
for (int i=0;i<1000;i++)
{
float l=25;
float L=exp(-l);
float k=0;
float p=1;
//begin while
do{
k=k+1;
// Generate a random number between 0 and 1
// return a uniform number in [0,1].
double u = rand() / (double)RAND_MAX;
p=p*u;
} while (p>L);
return k-1;
}}
これは私がこれを作成するために使用したアルゴリズムです
algorithm poisson random number (Knuth):
init:
Let L ← e−λ, k ← 0 and p ← 1.
do:
k ← k + 1.
Generate uniform random number u in [0,1] and let p ← p × u.
while p > L.
return k − 1.
前もって感謝します