python生成泊松分布随机数_泊松分布随机数
一、功能
产生泊松分布的随机数。
二、方法简介
泊松分布的概率密度函数为
]
用(P(lambda))表示。泊松分布的均值为(lambda),方差为(lambda)。
定理 若(lambda > 0),(x)是整数,(u_i)是(0,1)区间上均匀分布的随机数,即(u_{i} sim U(0, 1)),且有
[prod_{i=0}^{x}u_{i}geqslant e^{-lambda }> prod_{i=0}^{x+1}u_{i}
]
那么(x)是一个以(lambda)为均值的泊松分布的随机变量。
产生泊松分布随机变量(x)的具体算法如下:
设(b = 1,i=0);
产生均匀分布的随机数(u_i),即(u_{i} sim U(0, 1));
计算(bleftarrow bu_{i});
如果(bgeqslant e^{-lambda }),那么(ileftarrow i+1),返回到2;
取(x = i)。
三、使用说明
是用C语言实现产生二项分布随机数的方法如下:
/************************************
lambda ---泊松分布均值lambda
s ---随机数种子
************************************/
#include "math.h"
#include "uniform.c"
int poisson(double lambda, long int *s)
{
int i;
int x;
double a;
double b;
double u;
a = exp(-lambda);
i = 0;
b = 1.0;
do{
u = uniform(0.0, 1.0, s);
b *= u;
i++;
}while(b >= a);
x = i - 1;
return(x);
}
uniform.c文件参见均匀分布的随机数
一、功能 产生泊松分布的随机数。 二、方法简介 泊松分布的概率密度函数为 ] 用(P(lambda))表示。泊松分布的均值为(lambda),方差为(lambda)。 定理 若(lambda > 0),(x)是整数,(u_i)是(0,1)区间上均匀分布的随机数,即(u_{i} sim U(0, 1)),且有 [prod_{i=0}^{x}u_{i}geqslant e^{-lambda }> prod_{i=0}^{x+1}u_{i} ] 那么(x)是一个以(lambda)为均值的泊松分布的随机变量。 产生泊松分布随机变量(x)的具体算法如下: 设(b = 1,i=0); 产生均匀分布的随机数(u_i),即(u_{i} sim U(0, 1)); 计算(bleftarrow bu_{i}); 如果(bgeqslant e^{-lambda }),那么(ileftarrow i+1),返回到2; 取(x = i)。 三、使用说明 是用C语言实现产生二项分布随机数的方法如下: /************************************ lambda ---泊松分布均值lambda s ---随机数种子 ************************************/ #include "math.h" #include "uniform.c" int poisson(double lambda, long int *s) { int i; int x; double a; double b; double u; a = exp(-lambda); i = 0; b = 1.0; do{ u = uniform(0.0, 1.0, s); b *= u; i++; }while(b >= a); x = i - 1; return(x); } uniform.c文件参见均匀分布的随机数