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

蒙提霍尔问题模拟Java代码bug求助:计数逻辑错误

蒙提霍尔问题模拟代码test()方法修正

核心问题修正点

  • 循环次数错误:原代码循环条件i <= numGames会让循环执行numGames + 1次(比如传入100时会跑101次),导致计数多1。需要改为i < numGames,让循环恰好执行numGames次。
  • 胜负判断失效:原代码中if(true)是恒成立条件,完全没有利用playGame()返回的胜负结果来统计,导致不管输赢都累加计数。需要将playGame()的返回值作为判断条件。

修正后的test()方法代码

public void test(int numGames) {
    int numRunsSwitch = 0;
    int numRunsStick = 0;
    // 统计坚持选择的获胜次数
    for (int i = 0; i < numGames; i++) {
        if (playGame(true)) {
            numRunsStick++;
        }
    }
    // 统计切换选择的获胜次数
    for (int i = 0; i < numGames; i++) {
        if (playGame(false)) {
            numRunsSwitch++;
        }
    }
    System.out.println("Wins by sticking: " + numRunsStick);
    System.out.println("Wins by switching: " + numRunsSwitch);
}

额外优化建议

  • 变量名修正:原代码中numRumsStick是拼写错误,应该是numRunsStick,修正后避免后续维护混淆。
  • 可合并两个循环减少重复代码(可选):
public void test(int numGames) {
    int numRunsSwitch = 0;
    int numRunsStick = 0;
    for (int i = 0; i < numGames; i++) {
        if (playGame(true)) numRunsStick++;
        if (playGame(false)) numRunsSwitch++;
    }
    System.out.println("Wins by sticking: " + numRunsStick);
    System.out.println("Wins by switching: " + numRunsSwitch);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:12:40