陈胤辰中原商设
首页
上学期・AI
课程总览预测世界AI 历史AI 实验室自主学习
下学期・编程
课程总览JS 基础教学JavaSciptP5.js (上课用)运算思维与程序设计互动游戏
延伸探索
人体系统玄学系统建筑系统原民织布
简介
讲师介绍开课资讯

语言

繁体中文简体中文English日文Bahasa Indonesia

陈胤辰

中原大学商业设计系
资宸科技

快速链接

  • 讲师介绍
  • 开课资讯
  • 互动游戏
  • JavaScipt

联系 & 社群

© 2026 陈胤辰。版权所有。

Built with Next.js & Tailwind CSS

← 回到文章列表
機率邏輯數學

為什麼換門勝率更高?蒙提霍爾問題完全解析

2025-01-15·8 分鐘閱讀

問題背景


1963 年,美國電視節目《Let's Make a Deal》的主持人 Monty Hall 設計了一個遊戲:

三扇門後面,一扇藏有大獎,另外兩扇是空的。


遊戲流程:你選一扇門 → 主持人打開一扇「確定是空的門」→ 你可以換或不換。

直覺上,換不換都是 50% 吧?錯了。




條件機率的解釋


第一次選門


你有 1/3 的機率選到大獎,2/3 的機率選到空門。


主持人的動作


主持人是「全知的」,他只會打開「非你選、且是空的門」。


  • 如果你選到了大獎門(1/3):主持人隨機打開剩下兩扇空門之一
  • 如果你選到了空門(2/3):主持人只能打開另一扇空門,大獎就在你換的那扇

  • 換門勝率 = 2/3 ≈ 67%,不換勝率 = 1/3 ≈ 33%。




    用程式驗證


    import random
    
    def simulate(n_games=100000, switch=True):
        wins = 0
        for _ in range(n_games):
            doors = [0, 0, 1]  # 1 = prize
            random.shuffle(doors)
            choice = random.randint(0, 2)
    
            # 主持人打開一扇空門
            host_opens = next(
                i for i in range(3) if i != choice and doors[i] == 0
            )
    
            if switch:
                choice = next(i for i in range(3) if i not in [choice, host_opens])
    
            if doors[choice] == 1:
                wins += 1
    
        return wins / n_games
    
    print(f"換門勝率:{simulate(switch=True):.1%}")   # ~66.7%
    print(f"不換勝率:{simulate(switch=False):.1%}")  # ~33.3%
    



    結論


    這個問題告訴我們:直覺並不等於正確。數學和程式模擬是驗真假的最佳工具。

    前往互動遊戲頁面親自體驗,累計數百次後你會看到機率慢慢收斂到 2/3!


    ← 更多文章