我想用从 0
到 X
的随机整数填充大小为 X
的数组,且不重复。问题是我必须只使用数组来存储 int
的集合,而不是 ArrayList
。我该如何实现?
我不明白为什么我似乎无法理解这个。但这是我最近的一些代码,它填充了列表但允许重复。
System.out.print("Zero up to but excluding ");
int limit = scanner.nextInt();
// create index the size of the limit
int [] index = new int[limit];
for(int fill=0;fill<limit;fill+=1){
index[fill] = (limit);
}
int randomNumber = 0;
Random rand = new Random();
int [] randoms = new int[limit];
boolean flag = true;
// CODE TO NOT PRINT DOUBLES
for (int z=0;z<limit;z+=1){
randomNumber = rand.nextInt(limit);
int i=0;
while (i<limit){
if (index[i] == randomNumber){
flag = true;
}
else {
flag = false;
break;
}
i+=1;
}
if (flag == false){
randoms[z] = randomNumber;
index[z] = randomNumber;
}
}
System.out.println("Randoms: "+java.util.Arrays.toString(randoms));
最佳答案
这是一种方法:
- 创建一个长度为N的数组
- 从0填到N-1
- 运行一个 for 循环并随机交换 2 个索引
代码:
// Step 1
int N = 10;
int[] array = new int[N];
// Step 2
for(int i=0; i < N; i++)
array[i] = i;
// Step 3
for(int i=0; i < N; i++) {
int randIndex = (int) (Math.random() * N);
int tmp = array[i];
array[i] = array[randIndex];
array[randIndex] = tmp;
}
关于java - 仅使用数组生成不重复的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38547085/