泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数等等。
泊松分布的概率质量函数为:
在产生泊松分布时,首先需要产生均匀分布,下面给出了均匀分布和Possion分布的代码。
#include <math.h>
#include <stdlib.h>
#include <cmath>
//产生一(a,b)的均匀分布
double U_Randa(double a, double b)
{
//产生伪随机数
double x = rand();
return a+(b-a)*(x+1)/(RAND_MAX+1);
}
//泊松分布,Lamda为唯一的一个参数,均值和方差
double Possion(double Lamda)
{
srand(time(NULL));
double u;
int x = -1;
double log1, log2;
log1 = 0;
log2 = -Lamda;
do
{
u = U_Randa(0,1);
log1 += log(u);
x++;
}while(log1 >= log2);
return x>0 ? x:0;
}