【问题标题】:Assigning array values to ints and random array not generating (java)将数组值分配给整数和不生成随机数组(java)
【发布时间】:2018-11-08 21:10:24
【问题描述】:

我正在尝试从 0-3 创建三个不同的随机数,并将每个随机数分配给一个 int 变量。我该怎么做呢?此外,当.opset(0, 2) 时不会生成数组,但当它为(1, 3) 时会生成数组。我该如何解决这个问题?

package varselect;
import java.util.Arrays;
import java.util.Random;
public class varselect {
    public static void main(String[] args) {
        final int[] ints = new Random().opset(0, 2).distinct().limit(3).toArray();
    }
}

【问题讨论】:

  • 什么是opset()
  • java.util.Random 类中没有名为 opset 的方法。你从哪里得到的?
  • 我检查了 Java 11 的 Javadocs,除非有我不知道的更新版本的 Java,否则我看不出 opset 是什么。
  • 为了您自己阅读文档java.util.Random 的 Java 11 javadoc 在这里:docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/…

标签: java arrays int


【解决方案1】:

java.util.Random 类中没有名为 opset 的方法,因此您问题中的代码无法编译。您可以改用ints 方法:

final int[] ints = new Random().ints(0, 4).distinct().limit(3).toArray();
System.out.println(Arrays.toString(ints));

请注意,ints 采用您要生成数字的范围的下限(包括)和上限(不包括),因此如果您想要介于 0 和 3 之间的数字,则需要指定 (0, 4)作为论据。

【讨论】:

    【解决方案2】:

    这是正确的做法:

    final int[] ints = new Random().ints(0, 4).distinct().limit(3).toArray();
    

    它使用ints(0, 4),它提供了一个IntStream,其值来自0-3,然后我们调用.distinct() 来获取不同的值,limit(3) 来获取3 不同的值,最后我们把它变成一个数组.

    【讨论】:

      【解决方案3】:

      如果您想要长度为 3 的随机整数数组,那么您应该将绑定参数作为 3 传递给 Random.ints(int randomNumberOrigin, int randomNumberBound)。

      int[] randomIntArray = new Random().ints(0, 4).distinct().limit(3).toArray();
      

      【讨论】:

      • 就像@Jesper 说的,.ints(0, 3) 会从0-2 0-3 生成值,就像@BoldWarrior 想要的那样。
      • public IntStream ints(int randomNumberOrigin, int randomNumberBound) 返回一个有效无限的伪随机 int 值流,每个值都符合给定的原点(包括)和边界(不包括)。 --- 这是 ints() 方法的方法描述。 Bound 参数在这里是独占的。因此,如果我们将 3 作为绑定参数,那么它将随机值从 0 到 2。
      • 是的,我知道,但问题是random numbers from 0-3,所以randomNumberBound 应该是4,而不是3
      • 对不起,我以为是从 0 到 2。感谢您的指正
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多