java如何随机化数组,使任何元素都不在其原始位置
我应该取一个整数数组,从0开始,一直到另一个叫做cards的int数组的长度-1(有一个用户输入的长度),然后将它完全随机化,这样就不会有数字出现在它的原始位置
我知道了如何生成第一个数组,但我完全不知道如何完全随机化数组,有人能帮忙吗?
到目前为止,我已经:
int size = cards.length;
int[] numberList = new int[size];
for (int i = 0; i < size; i++) {
numberList[i] = i;
}
更新:
private int[] shuffleIndex() {
int size = cards.length;
int[] numberList = new int[size];
for(int i = 0; i < size; i++) {
numberList[i] = i;
}
randomizer(numberList);
return numberList;
}
private int[] randomizer(int[] input) {
int size = input.length;
Random random = new Random();
for (int i = size -1; i > 0; i--) {
int j = random.nextInt(i + 1);
int temp = input[i];
input[i] = input[j];
input[j] = temp;
}
for(int i = 0; i < size; i++) {
if(input[i] == i) {
randomizer(input);
}
}
return input;
}
# 1 楼答案
像这样试试
如果数组包含int 1-12,则这是一个输出示例
下面是它的工作原理
size
设置为数组大小exclusive of the value of size
将其移动到nextInt()
的下一次调用将不会触及它,因为它已递减李>