由给定概率密度函数生成随机数的两种常规方法

1、逆分布函数法 (Inverse Transform Method):

概率密度函数为 f(x)f(x)
概率累积分布函数为 F(x)F(x)
概率累积分布函数的反函数为 F1(x)F^{-1}(x)
uu 为服从 U(0,1)U(0,1) 均匀分布的随机数

x=F1(u)x=F^{-1}(u) 即为服从概率密度函数为f(x)f(x)的随机数。

逆分布法的优点为准确简洁,在能求出 F1(x)F^{-1}(x) 表达式的情况下为首选。
但多数情况下,无法直接给出 F1(x)F^{-1}(x) 的表达式,因此限制了此方法的使用范围。

2、舍选法 (Acceptance-Rejection Method):

概率密度函数为 f(x)f(x)
所要生成随机数的范围为 (a,b)(a,b)f(x)f(x)(a,b)(a,b) 上的最大值为 mm (可以理解为密度函数在(a,b)(a,b) 区间上的最高点)
(1)、生成服从 U(a,b)U(a,b) 均匀分布的随机数 xx,生成服从 U(0,n)U(0,n) 均匀分布的随机数 yy (可令 n=mn=m)
(2)、y<f(x)y<f(x) ,则 xx 为服从 f(x)f(x) 分布的随机数。
y>f(x)y>f(x) ,则重复第一步直到生成的 x,yx,y 符合条件。

注意,在设定 nn 的数值时:将 nn 设为 f(x)f(x)(a,b)(a,b)
上的最大值,是最效率的做法,在生成大量随机数的的情况下可节省时间。若不想计算 f(x)f(x)(a,b)(a,b) 的最大值 mm ,只要令
n>=mn>=m 即可。

舍选法所适用的范围更广,只要能给出密度函数 f(x)f(x) ,就可以使用。

“ 灵魂画师 ,呕心打造”
由给定概率密度函数生成随机数的两种常规方法