-
问题内容:产生服从均匀分布的随机数
- 原讨论链接: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)