您好,我正在尝试模拟一些作业调度算法,并且我正在尝试为请求创建一个泊松到达函数。我在维基百科上找到了泊松到达算法,我实现并运行了它,但我一直得到相同的结果(例如 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.
提前致谢