【问题标题】:Uniform random distribution in javajava中的均匀随机分布
【发布时间】:2014-05-23 15:28:01
【问题描述】:

我正在生成范围为 5.0 - 9.0 的随机值,生成的数字在理论上是否仍然均匀分布 ??

以及如何实现直方图,我的意思是我们需要什么值来实现直方图?

import java.util.Random;

public class GenerateNumber {
    public static void main(String args[]) {

        Random randomGenerator = new Random();

        for (int i = 0; i < 11; i++) {
            double randomDou = randomGenerator.nextDouble() * (9 - 5 + 1) + 5;
            System.out.println(randomDou);
        }
    }
}
  • 我的数学为零..请帮助我

【问题讨论】:

  • 我的意思是,如果我们缩放生成的值,它仍然是均匀分布吗??
  • (9 - 5 + 1) 你为什么要那样做?为什么不直接写 5?
  • min =5 , max = 9 ,我在谷歌上找到的公式是 randomGenerator.nextDouble() *(max-min+1)-min

标签: java math


【解决方案1】:

你在正确的道路上-线性缩放数字是正确的。

要测试您的逻辑,请插入 0.0 和 1.0 作为 nextDouble() 中的值

0.0 * (9 - 5 + 1) + 5 = 5, o.k.
1.0 * (9 - 5 + 1) + 5 = 10, not o.k.

这是测试数学的基本方法。

【讨论】:

  • 先生,我还是不明白,那你为什么假设 1.0 * (9 - 5 + 1) + 5 = 10 错了??
  • @febri23 1.0nextDouble() 可以返回的最大值。在这种情况下,您的等式将产生结果10。这是错误的 - 您希望范围在 9 结束。
  • thx 先生,所以当我们缩放数字时,分布仍然保持均匀??所以我如何在 x 轴 n y 轴上绘制直方图,我知道 y 轴代表频率,但 x 轴是什么?
【解决方案2】:

小数学错误

代码中有一个小错误。您希望随机生成介于 5.0 到 9.0 之间的数字,但您发布的代码将为您提供介于 5. 和 10.0 之间的数字。所以代码应该通过以下方式稍微改变一下:

import java.util.Random;

public class demo {
    public static void main(String args[]) {

        Random randomGenerator = new Random();

        for (int i = 0; i < 11; i++) {
            double randomDou = randomGenerator.nextDouble() * (9 - 5) + 5;
            System.out.println(randomDou);
        }
    }
}

应该是(9 - 5) 而不是(9 - 5 + 1),因为后者会给你一个从5.0(不包括在内)到10.0(包括在内)的范围。

均匀度

是的,该数字将按照您的方式均匀分布。 java.util.random 生成均匀分布的数字 [1]。直观地说,aχ(x) + b(1) 其中 a 和 b 都是常数,当且仅当 χ(x) 是均匀分布时也是均匀分布的。

回到问题,randomGenerator.nextDouble() * (9 - 5) + 5 的形式为 Eq.(1) 其中

  • (9 - 5) -> 一个
  • randomGenerator.nextDouble() -> χ(x)
  • 5 -> b

所以是的,它是均匀分布的。

对不起关于直方图的第二个问题,因为它不清楚并且让我感到困惑。

参考链接:[1]:https://perso.ensta-paris.fr/~diam/java/online/notes-java/summaries/60mathsum.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 2021-12-28
    • 1970-01-01
    • 2020-04-04
    • 2011-08-23
    • 1970-01-01
    • 2011-03-02
    相关资源
    最近更新 更多