Random() returns 零但没有零值

Random() returns zero but there is no zero value

我已经准备了一个代码来从整数数组 (1 - 10) 中获取一个随机数来构建乘法 table。

    int[] anArrayOne = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int[] anArrayTwo = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int answer;
    int firstNumber = new Random().nextInt(anArrayOne.length);
    int secondNumber = new Random().nextInt(anArrayTwo.length);
System.out.println("What is" + firstNumber + " times "
+ secondNumber + "? ");

代码有时returns“0”。如果两个数组中都没有分配 0 值,为什么会出现这种情况?

new Random().nextInt(anArrayOne.length) returns 一个介于 0 和 length 之间的随机整数,但您应该将其用作 select 数组中实际值的索引,如下所示:

Random rnd = new Random();
int firstNumber = anArrayOne[rnd.nextInt(anArrayOne.length)];
int secondNumber = anArrayTwo[rnd.nextInt(anArrayTwo.length)];

来自https://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int)

NextInt returns 一个伪随机、均匀分布的 int 值,介于 0(含)和指定值(不含)之间,

换句话说,在您的情况下,nextInt 将 return 一个从 0 到 9 的值。

如果你想使用随机数作为数组的索引,你可以做类似@haba713 的回答above/below