[a,b]内均匀分布的随机数x的生成有非常成熟的程序,其归一化条件可以表示为
![.int^b_a dx=1](http://latex.codecogs.com/gif.latex?%5Cint%5Eb_a%20dx=1)
那么,如何生成[a,b]内任意分布f(x)的随机数x呢?我们从归一化条件的类别入手。任意分布f(x)的随机数x的归一化条件可以表示为
![.int^b_a f(x)dx=1.](http://latex.codecogs.com/gif.latex?%5Cint%5Eb_a%20f%28x%29dx=1.)
假定有函数F(x),其微商(导数)为f(x),即d(F(x))=f(x)dx,那么上述归一化条件可以写成
![.int^{F(b)}_{F(a)}dy=1,](http://latex.codecogs.com/gif.latex?%5Cint%5E%7BF%28b%29%7D_%7BF%28a%29%7Ddy=1,)
其中y=F(x)。与均匀分布随机数的归一化条件比较可以发现,y是[F(a),F(b)]内均匀分布的随机数。所以生成[a,b]内任意分布f(x)的随机数做法如下:
1. 求f(x)的不定积分F(x);
2. 生成[F(a),F(b)]内的均匀分布的随机数y;
3. 求解F(x)=y得到x。
此x就是[a,b]内满足分布f(x)的随机数。
需要注意的是,生成均匀随机数的时候,区间是[F(a),F(b)],
不是[a,b]!兄弟我就是没注意这一点,导致了贻笑大方的错误……
https://blog.sciencenet.cn/blog-117333-563857.html
上一篇:
射电望远镜汇聚可见光的性能下一篇:
资本、知识和责任