java - 生成数字对的随机列表时避免重复的方法无法正常工作

标签 java

我有这段代码,用于在 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/

相关文章:

java - 使用 Swing 绘制自上而下的多路树

Java 和 Spring MVC 社交艺术分享网站的设计和架构

java - 当您在 Java 中调用 new 时,它会创建构造函数或类的副本吗?

java - 有人可以解释一下 JTexPane 在 GUI 中的使用吗?如果使用不正确,它是否会影响程序的输出?

java - 如何减少 Firestore 集合中的读取次数?

java - 优化: Declaring variables used for a class constructor outside of loop?

java - Java 公共(public)枚举的问题

java - JPanel 中的绘制位置和尺寸错误

java - 应用程序关闭后恢复 Android 返回堆栈

java - 如何正确扩展 JHipster 用户实体