用C语言生成泊松分布随机数实例源码
帮一个朋友做管理学科研究生阶段的一个作业,是对库存系统仿真,其中里面零售商的需求是泊松分布的随机数。需要用C语言产生泊松分布的随机数,通过找资料和编程实践,简单的程序写了出来,如下,供参考。
<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> 代码如下</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy6417')">复制代码</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy6417>algorithm poisson random number (Knuth):init:
Let L ← exp(−λ), k ← 0 and p ← 1.
do:
k ← k 1.
Generate uniform. random number u in [0,1] and let p ← p × u.
while p >= L.
return (k − 1).</td></tr></table>
C语言实现的泊松分布随机数的代码如下:
#include <math.h>
#include <time.h>
double U_Random();
int possion();
void main()
{
double u = U_Random();
int p = possion();
printf("%fn",u);
printf("%dn",p);
}
int possion() /* 产生一个泊松分布的随机数,Lamda为总体平均数*/
{
int Lambda = 20, k = 0;
long double p = 1.0;
long double l=exp(-Lambda); /* 为了精度,才定义为long double的,exp(-Lambda)是接近0的小数*/
printf("%.15Lfn",l);
while (p>=l)
{
double u = U_Random();
p *= u;
k ;
}
return k-1;
}
double U_Random() /* 产生一个0~1之间的随机数 */
{
double f;
srand( (unsigned)time( NULL ) );
f = (float)(rand() % 100);
/* printf("%fn",f); */
return f/100;
}</td></tr></table>
关于这个简单的库存仿真的全部代码:https://github.com/smilejay/c-cpp/tree/master/inventory-simulation
您可能感兴趣的文章:
用C语言生成泊松分布随机数实例源码
photoshop合成一张落日湖泊场景实例制作教程
R语言 决策树和随机森林 回归分析
想系统学习GO语言(Golang
php生成随机产生六位数密码的代码
python c 和java的区别有哪些
Go语言的主要特性和发展影响
Python的特点(优点和缺点)
Go 语言十年而立,Go2 蓄势待发
python语言是由哪个人创造的