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

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

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

http://en.wikipedia.org/wiki/Rayleigh_fading看到好的方程式。

所以,我有PDF,现在我只是想知道如何从中获取随机变量?

我看过这些问题:

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

用概率分布生成随机数

但我仍然不确定该怎么做。 我花了很长时间才能理解PDF,所以如果有人知道用Java获取具有特定PDF的随机变量的方法,那将非常感激!

瑞利分布是Weibull分布的一个特例。 如果你在谷歌周围,有很多用Java编写的Weibull生成器,例如:

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

对于你的情况,这样的事情:

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