You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二维数组每行生成6个不重复随机数的代码问题求助

问题分析与修复

原代码的核心问题在于重复检查逻辑完全偏离需求,且重复时的回退逻辑混乱:

  • 需求要求每行内部的6个数字互不重复,但原代码是和其他行的同列数字对比,完全没检查当前行已生成的元素是否重复。
  • 发现重复时回退行索引a--,会导致整行重新生成,不仅效率低下,还会引发循环逻辑错乱。

修正后的代码

// anzahlDerSpiele 代表二维数组的行数,比如需求中的2行
for (int a = 0; a < anzahlDerSpiele; a++) {
    // 遍历当前行的每一列
    for (int b = 0; b < 6; b++) {
        int randomNum;
        boolean schonDrinne;
        do {
            // 直接生成1-48范围内的整数随机数
            randomNum = (int) (Math.random() * 48) + 1;
            schonDrinne = false;
            // 检查当前行已生成的前b个元素是否重复
            for (int j = 0; j < b; j++) {
                if (zahlenRandom[a][j] == randomNum) {
                    schonDrinne = true;
                    break;
                }
            }
        } while (schonDrinne); // 生成重复数字就重新生成
        zahlenRandom[a][b] = randomNum;
    }
}

关键改进点

  • 重复检查逻辑修正:仅对比当前行内已生成的元素(j从0到b-1),确保同一行内无重复数字。
  • 生成逻辑简化:一步生成1-48的整数,避免多余的类型转换和round操作。
  • 循环重试机制:用do-while循环针对当前列的元素单独重试,直到生成不重复的数字,不会影响整行或其他行的生成流程。

内容的提问来源于stack exchange,提问作者Nic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:45:31