ポアソンの到着に基づいて、ランダムな「hello world」関数を作成しようとしています。以下のコードでは、平均平均 (Lamda) が 5 であることを定義しています。また、経過時間が 1 秒から 5 秒であり、それを追跡したいと考えています。
オープンソース プロジェクトに基づくと、この画像のカモメはこことここにありますが、同時にトラフィックがランダムに発生していることがわかります (私の場合は "hello world")。しかし、私の場合、ランダムなスリープ時間を取得しているだけですが、Hello World の数は同じです。
上記で使用したような画像に基づいて、どうすればアイデアを実現できますか。これは乱数発生器のポアソン分布を行う正しい方法ですか? クヌースに基づくポアソンのアルゴリズムを見た
助けてくれてありがとう..私の悪い英語でごめんなさい。
#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*/
}
}