我有这段代码,用于在 boolean [][]中将随机值设置为 true,而不进行任何重复:
int a = 0;
int b = 0;
int counter = 0;
for (int i=0; i<=50; i++) {
do {
a = randomizer.nextInt(hoogte);
b = randomizer.nextInt(breedte);
/**debug variable*/
counter++;
} while (bommaker[a][b]);
bommaker[a][b] = true;
}
经过一段时间的测试,我发现有些不对劲,所以我添加了一个计数器来检查它。每次我运行该程序时,“计数器”都会出现不同的数字。一次是 57,另一次甚至是 63。但我已将循环设置为 51。这意味着代码无法正常工作。有人可以解释为什么它会生成超过 51 个数字,并给出可能的解决方案吗?
最佳答案
你必须记住,循环中有一个循环。 OUTTER 循环限制为 51 次执行,但内部循环将导致随机次数的迭代(每次看到数组已设置为 true 时都会进行一次额外的迭代)。
除了计数器值大于您的预期之外,代码无法正常工作怎么办?
关于java - 生成数字对的随机列表时避免重复的方法无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001665/