【问题标题】:How to generate a random number with a specific probability density function?如何生成具有特定概率密度函数的随机数?
【发布时间】:2012-12-05 17:44:11
【问题描述】:

我正在尝试为移动无线网络建模阴影和快速衰落。对于快速衰落,瑞利衰落是一个合理的使用模型。信道响应的包络将是瑞利分布的。调用这个随机变量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 获取随机变量的方法,那将不胜感激!

【问题讨论】:

    标签: java random probability-theory


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢! flanagan 图书馆正是我想要的!让我不必创建自己的算法。非常感谢! :)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2017-05-30
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多