【问题标题】:How do I generate an exponentially distributed number in Java (given a mean)? [duplicate]如何在 Java 中生成指数分布的数字(给定平均值)? [复制]
【发布时间】:2017-05-21 11:54:07
【问题描述】:

我的平均值为 5。我需要在 Java 中生成一个随机数(指数分布)。

我知道对于 Python,您可以运行诸如 random.expovariate(5) 之类的东西,但我不确定如何为 Java 解决这个问题。谁能帮帮我?

【问题讨论】:

    标签: java random exponential


    【解决方案1】:

    here。您正在寻找的是这样的:

    public double getNext() {
        return  Math.log(1-rand.nextDouble())/(-lambda);
    }
    

    (代码取自here

    【讨论】:

    • 请记住,您可以根据“平均时间”和“速率”来定义指数随机变量。 Lambda 定义速率(每单位时间的事件)。您想根据事件之间的平均时间参数化分布,只需使用 1/lambda。
    • 我不确定 rand.nextDouble() 的代码是什么意思。我认为 lambda 指的是 Danilo 所说的平均速率(我在帖子中提到的是 5)。
    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2014-07-01
    相关资源
    最近更新 更多