【问题标题】:how do i get a random double within a specified range?如何获得指定范围内的随机双精度数?
【发布时间】:2014-03-01 05:55:25
【问题描述】:

我真的认为这会起作用,但是当我运行它时,我总是得到一些随机的大小数,这没有任何意义。逻辑是对的,为什么代码不行呢?

do{
  value = rnd.nextDouble();
}while(value>min && value<max);

请记住,“min”和“max”实际上是执行一些简单算术运算然后返回该值的函数,但为了简单起见,我只放了 min 和 max,所以我不必发布整个类。

【问题讨论】:

    标签: java random double range


    【解决方案1】:

    您可以声明startend 变量(intdouble),并使用nextDouble() 之类的:

    value = rnd.nextDouble() * (end - start) + start;
    

    记住:

    public double nextDouble() 从该随机数生成器的序列中返回 0.0 到 1.0 之间的下一个伪随机、均匀分布的双精度值。

    【讨论】:

      【解决方案2】:

      nextDouble method 返回介于 0.01.0 之间的随机 double 值。您可以通过添加min 值来转换范围,并通过将其乘以maxmin 之间的差异来扩大范围。

      value = (rnd.nextDouble() * (max - min)) + min;
      

      【讨论】:

        【解决方案3】:

        rangeMinrangeMax 之间生成一个随机值:

         Random r = new Random();
         double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();
        

        【讨论】:

          猜你喜欢
          • 2012-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-08
          • 1970-01-01
          • 1970-01-01
          • 2010-11-02
          相关资源
          最近更新 更多