java中的均匀随机分布

java中的均匀随机分布,java,math,Java,Math,我正在生成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

我正在生成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);
        }
    }
}
import java.util.Random;
公共类生成器{
公共静态void main(字符串参数[]){
Random randomGenerator=新的Random();
对于(int i=0;i<11;i++){
double randomDou=randomGenerator.nextDouble()*(9-5+1)+5;
System.out.println(randomDou);
}
}
}
  • 我对数学一窍不通,请帮帮我

    • 您正处于正确的路径上-线性缩放数字是正确的

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


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

      我的意思是,如果我们缩放生成的值,它仍然是均匀分布吗??
      (9-5+1)
      为什么这样做?你为什么不写5呢?min=5,max=9,我在谷歌上找到的公式是randomGenerator.nextDouble()*(max-min+1)-min我仍然不明白,那么为什么你假设1.0*(9-5+1)+5=10错了??@febri23
      1.0
      nextDouble()
      可以返回的最大值。在这种情况下,您的方程式将产生结果
      10
      。这是错误的-您希望范围结束于
      9
      。thx先生,因此当我们缩放数字时,分布仍然保持一致???,因此我如何绘制直方图我需要在x轴n y轴上绘制直方图,我知道y轴表示频率,但在x轴上是什么?
      0.0 * (9 - 5 + 1) + 5 = 5, o.k.
      1.0 * (9 - 5 + 1) + 5 = 10, not o.k.