Random()返回零但没有零值

时间:2018-01-12 21:38:47

标签: java arrays random zero

我准备了一个代码,用于从整数数组(1 - 10)中获取一个随机数,以构建一个乘法表。

    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 + "? ");

代码有时会返回“0”。如果两个数组中都没有分配0值,为什么会这样呢?

2 个答案:

答案 0 :(得分:3)

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

NextInt返回伪随机,均匀分布的int值介于0(含)和指定值(不包括)之间,

换句话说,在您的情况下,nextInt将返回0到9之间的值。

如果你想使用随机数作为数组的索引,你可以做一些像@ haba713' s上面/下面的回答

答案 1 :(得分:0)

new Random().nextInt(anArrayOne.length)返回0和length之间的随机整数,但您应该将其用作索引来从数组中选择实际值,如下所示:

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