【发布时间】:2011-11-30 20:11:24
【问题描述】:
我正在尝试根据泊松到达创建一个随机的“hello world”函数。在下面的代码中,我定义平均平均值(Lamda)为 5。我希望时间从 1 到 5 秒,并跟踪它。
基于一个开源项目,seagull 在这张图片中的here 和here,我可以看到在同一时间,但不同的意思,流量的随机发生越多(在我的例子中, “你好世界”)。但就我而言,它只是随机睡眠时间,但 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*/
}
}
【问题讨论】:
标签: c math time traffic poisson