All things are difficult before they are easy. 没有软件的裸机是一具僵尸,没有硬件的软件是一个幽灵。2012,专注于Linux和C语言,关注自动化、性能测试,关注开源社区和开源测试工具、方法,尝试测试团队管理!

C语言产生泊松分布随机数

上一篇 / 下一篇  2010-05-21 23:33:25 / 个人分类:C/C++

一个MM让我帮她做作业,是个库存系统仿真,其中里面零售商的需求是泊松分布随机数。需要用C语言产生泊松分布的随机数,通过找资料和编程实践,简单的程序写了出来,如下,供参考:
算法如下:
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).

代码实现:
#include <stdio.h>
#include <math.h>
#include <time.h>

double U_Random();
int possion();

void main()
{
  double u = U_Random();
  int p = possion();
  printf("%f\n",u);
  printf("%d",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("%.15Lf\n",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("%f\n",f); */
  return f/100;
}
参考资料:
http://iask.sina.com.cn/b/14984266.html
随机数产生:http://www.cppblog.com/pengkuny/archive/2006/11/08/14862.html

TAG: C语言 随机数 伪随机 泊松分布

笑遍世界的测试技术 引用 删除 smile665   /   2013-05-12 12:49:07
请大家参考:
http://smilejay.com/2013/05/possion-number-in-c-language/
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

smile665

smile665

Stay hungry, stay foolish. 得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。

日历

« 2020-03-24  
1234567
891011121314
15161718192021
22232425262728
293031    

数据统计

  • 访问量: 753556
  • 日志数: 220
  • 建立时间: 2008-11-06
  • 更新时间: 2012-10-06

RSS订阅

Open Toolbar