使用均匀分布随机数产生器构造任意分布的随机数产生器
2015-08-16 12:46
381 查看
一.算法原理
在概率论中,有下面重要的结论:设随机变量Y的概率分布函数F(y)为连续函数,而X是在(0,1)上均匀分布的随机变量,设,则Z与Y有相同的分布。
因此,理论上,我们可以用(0,1)上的均匀分布来得到任意分布的随机数
设随机变量Y的概率密度函数为f(y),则,我们可以按照下面的步骤来获得满足其分布的随机数:
1.根据给定的概率密度函数(PDF)f(y),通过积分算出概率分布函数F(y);
2.计算概率分布函数F(y)的反函数
,
3.生成一个(0,1)上均匀分布的随机数变量X,
4.那么
就是满足要求的分布的随机数。
二.使用均匀分布产生指数分布
1.指数分布是概率密度函数(PDF)为通过计算可以得到,指数分布的概率分布函数为
2.指数分布的概率分布函数的反函数为
3.获得一个在(0,1)之间均匀分布的随机数x,则通过下面的式子计算得到的y满足指数分布
2.MATLAB代码
[align=left] [/align]
[align=left]%% clear[/align]
[align=left]clc;[/align]
[align=left]clear;[/align]
[align=left] [/align]
[align=left]%% uniform distribution[/align]
[align=left]N = 100000000;[/align]
[align=left]U1 = rand(1, N);[/align]
[align=left] [/align]
[align=left]%% inverse function[/align]
[align=left]lamda = 1;[/align]
[align=left]Z1 = -1 / lamda * log(1 - U1);[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left]%% visualisztion of PDF[/align]
[align=left]subplot(1, 2, 1), hist(U1, 100), title( 'The PDF of U1');[/align]
[align=left]subplot(1, 2, 2), hist(Z1, 100), title( 'The PDF of Z1');[/align]
[align=left] [/align]
3.实验结果
参考文献
徐全智,数学建模
版权所有,欢迎转载,转载请注明出处,谢谢
相关文章推荐
- 如何用随机函数rand5来构造随机函数rand7
- 通过均匀分布随机数产生器获得一个高斯分布随机数产生器
- 一道有意思的概率应用题
- 概率论6大基本分布
- Matlab Tricks(三十) —— 任意区间的均匀分布
- 均匀分布构造离散型随机变量(以泊松分布为例)python
- 均匀分布生成标准正态分布 python
- 均匀分布的概率密度函数和分布函数学习笔记1
- 随机变量的独立性
- 如何产生已知概率密度函数的随机数?
- C语言实现均匀分布随机函数
- Python随机生成均匀分布在单位圆内的点代码示例
- Python随机生成均匀分布在三角形内或者任意多边形内的点
- python随机数分布random均匀分布实例
- python 实现生成均匀分布的点
- Solr与Sphinx的比较
- POJ2823 Sliding Window(单调队列模版题)
- Tsinsen A1393. Palisection 【Palindromic Tree】
- 第85讲:Scala中For表达式 实现高阶函数的效果
- Java 集合类的一点总结