我正在尝试基于泊松到达创建一个随机的“hello world”函数。在下面的代码中,我定义平均值(Lamda)为5。我希望时间从1-5秒流逝,并跟踪它。
基于开源项目seagull,在这个图片here和here中,我可以看到对于相同的时间,但不同的平均值,交通流量(在我的情况下,“hello world”)更随机出现。但是对于我的情况,它只是得到随机的睡眠时间,但“Hello World”的数量是相同的。
我如何根据上面使用的图像实现这个想法?这是用于随机生成器的泊松分布的正确方法吗?我看到基于Knuth的泊松算法。
感谢您的帮助。对不起,我的英语不好。
基于开源项目seagull,在这个图片here和here中,我可以看到对于相同的时间,但不同的平均值,交通流量(在我的情况下,“hello world”)更随机出现。但是对于我的情况,它只是得到随机的睡眠时间,但“Hello World”的数量是相同的。
我如何根据上面使用的图像实现这个想法?这是用于随机生成器的泊松分布的正确方法吗?我看到基于Knuth的泊松算法。
感谢您的帮助。对不起,我的英语不好。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <string.h>
#include <time.h>
int poisson(double lambda){
int k=0;
double L=exp(-lambda), p=1;
do {
++k;
p *= rand()/(double)INT_MAX;
} while (p > L);
return --k;
}
int main()
{
int i=0;
int val=0;
time_t timer;
char buffer[25];
struct tm* val_time;
/*For time= 0 until time=10*/
for (i=0; i<10; i++)
{
printf("Hello World\n");
/*To print the time*/
time(&timer);
val_time = localtime(&timer);
strftime(buffer, 25, "%Y:%m:%d%H:%M:%S", val_time);
puts(buffer);
sleep(poisson(2)); /*interarrival process*/
}
}