如何使用特定的概率密度函数生成随机数?

3
我正在尝试为移动无线网络建模阴影和快速衰落。对于快速衰落,瑞利衰落是一个合理的模型。信道响应的包络将服从瑞利分布。将这个随机变量称为R,它将具有概率密度函数(PDF):

PR(r) = ((2r)/Ω)*exp(-r^2/Ω), r >= 0, Ω = 2σ^2

请查看http://en.wikipedia.org/wiki/Rayleigh_fading以了解漂亮地书写方程式。

所以,我有了PDF,现在我只想知道如何从中得到随机变量?

我看过了这些问题:

在Ruby中生成适合概率分布的数字数组?

使用概率分布生成随机数

但我仍然不确定该怎么做。理解PDF花费了我很长时间,如果有人知道在Java中获取特定PDF的随机变量的方法,那将不胜感激!

2个回答

4

瑞利分布是威布尔分布的一个特例。如果你在谷歌上搜索,会发现有很多用Java编写的威布尔分布生成器,例如:

从给定分布生成随机数的一种方法是生成在0到1之间均匀分布的随机数,并将目标分布的反CDF应用于该随机数。请参见维基百科


非常感谢!Flanagan库正是我想要的!这样就不用自己编写算法了。非常感谢! :) - Lauren

0

对于您的情况,可以这样做:

 Random generator = new Random();
 double r = Math.sqrt(-Omega*Math.log(1-generator.nextDouble()));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接