CSDN=>FAQ=>FAQ 展示
  • 问题内容:产生服从均匀分布的随机数
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=4846959
  • 所属论坛:数据结构与算法     审核组:其他
  • 提问者:Kvci     解决者:mathe
  • 感谢:mathe
  • 关键字:函数 专题开发/技术/项目 数据结构与算法 变量 急用 随机 均匀 分布 服从 rand_max rand
  • 答案:

    各位好,我想问个东西:怎么产生在区间[a,b]上服从均匀分布的一系列随机数?
    还有就是产生服从参数为 t 的指数分布的随机数?
    哪位讲讲思路?急用!
    谢谢啦!!!!分不是问题哈

    ---------------------------------------------------------------

    计算机上默认随机函数就是服从均匀分布的,它会产生[0,RAND_MAX]之间的均匀分布
    所以只要
    rand()*(b-a)/RAND_MAX+a
    就可以产生[a,b]上的均匀分布了。
    比如U()=rand()/RAND_MAX就是[0,1]上的均匀分布。
    至于其他分布,比如其密度函数是f(x),其对应分布函数为F(x)(也就是f(x)的积分)
    那么
    G(U())产生的随机变量就服从分布f(x),其中G是F的逆函数。

    ---------------------------------------------------------------

    具体到指数函数,由于
    f(x)=t*exp(-t*x)
    F(x)=1-exp(-t*x)
    所以G(x)=-log(1-x)/t
    所以可以如下编程:

    x=rand();
    U=x/(double)RAND_MAX;
    G=-log(1-U)/t;
    return G;

  • 评价: 有价值 给朵鲜花(0) 无价值 扔个鸡蛋(0)
相关FAQ
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo