首页 > 解决方案 > java中不重复的随机数

问题描述

我想在二维数组中生成从 1 到 n^2 不重复的随机数(例如 n=3,1 到 9 范围内的数字),我不想使用列表,但是我的代码生成了重复的数字,如何我可以解决这个问题吗?这是我的代码:

for(int i=0; i<n; i++){
   for(int j=0; j<n; j++){
      array[i][j] = rand.nextInt((n * n) - 1) + 1;
   }
}

标签: javarandom

解决方案


一种方法是生成一个顺序集合,将其打乱并将打乱的元素放入数组中。

List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= n * n; i++) {
    numbers.add(i);
}
Collections.shuffle(numbers);
int index = 0;
for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        array[i][j] = numbers.get(index);
        index++;
    }
}

推荐阅读