关于java:Random.nextInt()产生非常相似的数字?

Random.nextInt() producing very similar numbers?

我编写了一个类来生成一个随机的Int数组,其数字在Java中的(0-100)之间:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    import java.util.Random;

    public class RandomClass{
        private Random randNum;

        public RandomClass() {
            randNum = new Random();
        }

        public int[] generateRandomArray(int arraySize){
            int[] theArray = new int[arraySize];
            for(int i = 0; i < arraySize; i++){
                theArray[i] = randNum.nextInt(101);
            }
            return theArray;        
        }
    }

出于某种原因,当我运行程序时,每次在Array输出中都会重复出现类似的数字序列。

以下示例显示了在不同时间执行的3次程序:

1
2
3
4
5
Array result: [65, 71, 71, 71, 78, 78, 78, 78, 78, 78]

Array result: [40, 55, 55, 55, 62, 62, 62, 70, 77, 77]

Array result: [56, 56, 73, 73, 73, 73, 77, 77, 77, 77]

为什么会这样? 是因为Random函数是基于时间的,并且循环运行得太快才能返回一个新的"随机"数字? 还是其他一些原因? 我该如何解决?


您发布的代码没有任何问题,只需添加一个main方法,您将看到:

1
2
3
4
5
6
public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
        int[] ints = new RandomClass().generateRandomArray(10);
        System.out.println("RandomClass::main: ints =" + Arrays.toString(ints));
    }
}

它打印非常不同的随机数。 问题出在其他地方。