如何用c语言生成符合泊松分布的随机变量?

来源:百度知道 编辑:UC知道 时间:2024/09/21 07:03:45
如题
那位高手帮帮忙
能不能给编一个比较完整的程序啊 给的那些都没有运行结果
谢谢

1)在泊松分布中,求出X取何值时,p(X=k)取最大值时,设为Pxmax.

其时,这样当于求解f(x)=lamda^k/k! 在k取何值时有最大值,虽然,这道题有一定的难度,但在程序中可以能过一个循环来得到取得f(x)取最大值时的整数自变量Xmax。

2) 通过迭代,不断生成0-1区间上的随机数,当随机数<Pxmax时,则终止迭代,否则重复(2)

3) 记录迭代过程的次数,即为所需要得到的符何泊松分布的随机量。

显然,这种方法较为粗糙,在试验的过程中发现:生成的的随机量只能算是近似的服从

泊松分布,所以,更为有效的算法还有待尝试。
const int MAX_VAL = 10000 ;
double U_Rand( double a, double b ) // 均匀分布
{
double x = random( MAX_VAL );
return a + (b - a) * x / (MAX_VAL - 1 );
}
double P_Rand( double Lamda ) // 泊松分布
{
double x = 0 ,b = 1 ,c = exp( - Lamda ),u;
do {
u = U_Rand( 0 , 1 );
b *= u;
if ( b >= c )
x ++