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

时间:2012-12-05 17:44:11

标签: java random probability-theory

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

的概率密度函数(PDF)

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

http://en.wikipedia.org/wiki/Rayleigh_fading看到方程写得很好。

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

我看过这些问题:

Generate Array of Numbers that fit to a Probability Distribution in Ruby?

Generate Random Numbers with Probabilistic Distribution

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

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