我正在尝试根据泊松到达创建一个随机的“hello world”函数。在下面的代码中,我定义平均平均值(Lamda)为 5。我希望时间从 1 到 5 秒过去,并跟踪它。
基于一个开源项目,这张图片中的seagull here和here,我可以同时看到,但不同的意思是,流量的随机出现越多(在我的例子中,“hello world”)。但就我而言,它只是随机睡眠时间,但 Hello World 的数量是相同的。
如何根据我上面使用的图像来实现这个想法。这是为随机生成器进行泊松分布的正确方法吗?我看到了基于Knuth的 Poisson 算法
谢谢你的帮助..对不起我的英语不好。
#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*/
}
}