---
# System prepended metadata

title: 【數學理論】 04. 你該更換你的選擇嗎？(下) —  蒙提霍爾悖論 (Monty Hall Paradox)
tags: [悖論, 【數學理論】]

---

---
title: 【數學理論】 04. 你該更換你的選擇嗎？(下) —  蒙提霍爾悖論 (Monty Hall Paradox)
tags:
  - 【數學理論】
  - 悖論
url: https://hackmd.io/hT5fsVT-TfG4VYGZvVY77Q
lastSync: 2025-05-25T08:45:35.854Z
hackmd:
  url: https://hackmd.io/hT5fsVT-TfG4VYGZvVY77Q
  title: 【數學理論】 04. 你該更換你的選擇嗎？(下) —  蒙提霍爾悖論 (Monty Hall Paradox)
  lastSync: 2025-05-25T05:17:17.456Z
---
你該更換你的選擇嗎？(下) 
===
<font size=4><font color=gray>蒙提霍爾悖論 (Monty Hall Paradox)</font><br></font><br>
---

<!-- 20250524 -->

現在你已經了解了貝式定理並且熟悉如何計算，接下來就進入正題：**蒙提霍爾悖論**。

<br>

首先我們先來複習一下[**上一篇**](https://hackmd.io/@lewisjjj800/r1yyOQgfxx)提到**三門問題**的情境：

<br>

>[!Note] **三門問題**
>觀眾先隨機選一扇門，接著主持人把另外兩扇門的其中一扇打開之後，詢問觀眾要不要更換選擇。

<br>

這時候就可以分成兩種情況：

1. 觀眾先隨機選一扇門，接著主持人把另外兩扇門的其中一扇打開之後，觀眾選擇不換門，最後獲得<font color=red>跑車</font>的機率。
2. 觀眾先隨機選一扇門，接著主持人把另外兩扇門的其中一扇打開之後，觀眾選擇換門，最後獲得<font color=red>跑車</font>的機率。

<br>

為了不讓整篇文太過冗贅，我們定義一下幾個名詞：

刪門：主持人把另外兩扇門的其中一扇打開，畢竟他刪掉觀眾可以換過去的選擇，因此這個動作後續稱為**刪門**。
<font color=red>跑車門</font>：門後是<font color=red>跑車</font>的門。
<font color=blue>山羊門</font>：門後是<font color=blue>山羊</font>的門。

<br>

現在我們先以數學方式來證明**蒙提霍爾悖論**

<br>

## **數學證明**

<br>

我們以**觀眾角度**，分別以下列兩種情況計算貝式定理結果。

<br>

---

### **情況1：觀眾選擇**不換門**的情況下，最後獲得<font color=red>跑車</font>的機率。**

<br>

在這種情況下獲得<font color=red>跑車</font>的機率只有一種，就是車子就在觀眾一開始選擇的門後，因此我們可以列出以下機率。

$P(H)$：一開始就選中<font color=red>跑車門</font>的機率
$P(¬H)$：一開始沒選中<font color=red>跑車門</font>的機率
$P(E \vert H)$：選中<font color=red>跑車門</font>的情況下，選擇要換的機率
$P(E \vert ¬H)$：沒選中<font color=red>跑車門</font>的情況下，選擇要換的機率
$P(E)$：主持人刪門，觀眾選擇不換門後，選中<font color=red>跑車門</font>與<font color=blue>山羊門</font>的機率總和

<br>


這個時候我們就能計算出以下各種機率：

<br>


$P(H)=\dfrac{1}{3}$

$P(¬H)=\dfrac{2}{3}$

$P(E \vert H)=\dfrac{1}{2}$ 在觀眾選中<font color=red>跑車門</font>的前提下，主持人刪<font color=blue>山羊門</font>，觀眾選擇不換門的機率是 $\dfrac{1}{2}$

$P(E \vert ¬H)=\dfrac{1}{2}$ 在觀眾沒選中<font color=red>跑車門</font>的前提下，主持人刪<font color=blue>山羊門</font>，觀眾選擇不換門的機率是 $\dfrac{1}{2}$


$P(E)=$主持人刪門，觀眾選擇不換門的情況下，選中<font color=red>跑車門</font>的機率+選中<font color=blue>山羊門</font>的機率
&ensp;&nbsp;&ensp;&ensp;&emsp;$=P(H)\times P(E \vert H)+P(¬H)\times P(E \vert ¬H)$
&ensp;&nbsp;&ensp;&ensp;&emsp;$=\dfrac{1}{3} \times \dfrac{1}{2} + \dfrac{2}{3} \times \dfrac{1}{2} = \dfrac{1}{2}$

<br>

接下來一樣應用**貝式定理**，把上面的數據代入貝式定理公式：

<br>

$P(H \vert E)=\dfrac{\dfrac{1}{3}\times \dfrac{1}{2}}{\dfrac{1}{2}} = \dfrac{1}{3}$

<br>

因此我們可以知道，當我們選擇**不換門**，我們最後選中<font color=red>跑車門</font>的機率依舊是 $\dfrac{1}{3}$

<br>

這其實很直覺，畢竟一開始選中<font color=red>跑車門</font>的機率就是 $\dfrac{1}{3}$ ，觀眾從頭到尾都沒換門，跟主持人刪不刪門沒關係。

<br>

接下來我們考慮第二種情況：選擇**換門**的情況下，選中車子的機率。

<br>

---

### **情況2：觀眾選擇**換門**的情況下，最後獲得<font color=red>跑車</font>的機率。**

<br>

$P(H)$：一開始就選中<font color=red>跑車門</font>的機率
$P(¬H)$：一開始沒選中<font color=red>跑車門</font>的機率
$P(E \vert H)$：選中<font color=red>跑車門</font>的情況下，選擇要換的機率
$P(E \vert ¬H)$：沒選中<font color=red>跑車門</font>的情況下，選擇要換的機率
$P(E)$：主持人刪門，觀眾選擇不換門後，選中<font color=red>跑車門</font>與<font color=blue>山羊門</font>的機率總和


這個時候我們就能計算出以下各種機率：


$P(H)=\dfrac{1}{3}$

$P(¬H)=\dfrac{2}{3}$

$P(E \vert H)=\dfrac{1}{2}$ 在觀眾選中<font color=red>跑車門</font>的前提下，主持人刪<font color=blue>山羊門</font>，觀眾選擇不換門的機率是 $\dfrac{1}{2}$

$P(E \vert ¬H)=\dfrac{1}{2}$ 在觀眾沒選中<font color=red>跑車門</font>的前提下，主持人刪<font color=blue>山羊門</font>，觀眾選擇不換門的機率是 $\dfrac{1}{2}$


$P(E)=$主持人刪門，觀眾選擇不換門的情況下，選中<font color=red>跑車門</font>的機率+選中<font color=blue>山羊門</font>的機率
&ensp;&nbsp;&ensp;&ensp;&emsp;$=P(H)\times P(E \vert H)+P(¬H)\times P(E \vert ¬H)$
&ensp;&nbsp;&ensp;&ensp;&emsp;$=\dfrac{1}{3} \times \dfrac{1}{2} + \dfrac{2}{3} \times \dfrac{1}{2} = \dfrac{1}{2}$

<br>

以上這些機率跟不換門的情況一模一樣，但接下來要**注意**，因為我們要求的是：**觀眾選擇換門，最後獲得<font color=red>跑車</font>的機率**。因此**不能**一開始就選中<font color=red>跑車門</font>，這樣選擇換門後才會選到<font color=red>跑車門</font>，所以應用**貝式定理**時，我們要求的其實是：

$P(¬H \vert E)=\dfrac{P(¬H)P(E \vert ¬H)}{P(E)}$

<br>

一樣應用**貝式定理**，把上面的數據代入貝式定理公式：

<br>

$P(¬H \vert E)=\dfrac{\dfrac{2}{3}\times \dfrac{1}{2}}{\dfrac{1}{2}} = \dfrac{2}{3}$

<br>

因此我們可以知道，當我們選擇**換門**，我們最後選中<font color=red>跑車門</font>的機率就會提高到 $\dfrac{2}{3}$

---

<br>

當你覺得數學證明麻煩、不直觀、問題一大堆時，我們就能用最簡單、最直觀、大家看了都一目了然的證明法：**窮舉法（Proof by exhaustion）**

<br>

窮舉法的證明精隨就是：**把所有可能性都列出來**，舉個例子：你該如何證明「**28這個數字的因數共有6個**」？，那方法很簡單，就是把28的因數都列出來，數一遍看有沒有六個就可以證明了。

<br>

但聰明的你大概也想到了，這大概只能適用於邏輯與結構比較簡單的命題，如果今天要我證明「**1797973393這個數字的因數是不是有4個**」？那要我窮舉到死可能也證明不出來他是不是對的。

<br>

>事實上1797973393是由兩個質數(27361、65713)相乘出來的，而一種特殊的非對稱密碼法-RSA加密演算法正是利用兩個質數作為加密與解密的兩個鑰匙(key)來進行加密，未來提及到密碼學再詳細展開。


<br>

接下來我們用窮舉證明法列出表格來證明。

<br>

## **窮舉證明法**

<br>

我們以**觀眾角度**，把所有可能的情況列舉出來，首先是**觀眾選擇死都不換門**的所有情況：

|**選擇情況**| <font color=red>跑車門</font> | <font color=blue>山羊門</font> | <font color=blue>山羊門</font> |
|-|-|--|---|
|**情況一**| <font color=red>**最終選擇**</font> | 主持人刪門 | -- |
|**情況二**| -- | **最終選擇** | 主持人刪門 |
|**情況三**| -- | 主持人刪門 | **最終選擇** |


<br>

上述表格可以看到，因為觀眾死都不換門，所以一開始的選擇就是**最終選擇**，這時我們就可以看到，這三種情況中觀眾真正會贏得<font color=red>跑車</font>的情況只能在一開始就選中<font color=red>跑車門</font>，因此贏得<font color=red>跑車</font>的機率為 $\dfrac{1}{3}$

<br>

接下來我們同樣以觀眾角度，把**觀眾無論如何都會換門**的所有情況列舉出來：


|**選擇情況**| <font color=red>跑車門</font> | <font color=blue>山羊門</font> | <font color=blue>山羊門</font> |
|-|-|--|---|
|**情況一**| 第一次選擇 | 主持人刪門 | **最終選擇** |
|**情況二**| <font color=red>**最終選擇**</font> | 第一次選擇 | 主持人刪門 |
|**情況三**| <font color=red>**最終選擇**</font> | 主持人刪門 | 第一次選擇 |

<br>

因為觀眾無論如何都會換門，因此在第一次選擇時沒選中<font color=red>跑車門</font>的話，主持人就會好心的幫觀眾把另外一扇<font color=blue>山羊門</font>給刪了，這種情況下觀眾在換門時就只會換到<font color=red>跑車門</font>。

<br>

這時我們就可以看到，這三種情況中觀眾真正會贏得<font color=red>跑車</font>的情況就是在一開始就不要選中<font color=red>跑車門</font>，而<font color=blue>山羊門</font>有兩扇可以在一開始給觀眾選，因此贏得<font color=red>跑車</font>的機率為 $\dfrac{2}{3}$

<br>

因為把所有情況列出來了，我們可以看到**觀眾換門確實贏得<font color=red>跑車</font>的機率比不換還高**，因此根據窮舉法驗證了應該要更換選擇。


<br>

幸好蒙提霍爾悖論只是**三門問題**，還能在短時間窮舉出來，要是變成**千門問題**那實在難以窮舉了。

<br>

如果你覺得還是不夠簡單、不夠直觀，那就把問題最簡化，將核心概念抽取出來，把三門問題轉化成**取球問題**。

<br>

## **取球問題**

<br>

>[!Note] **取球問題**
**有兩個箱子，你跟主持人分別持有一個箱子，你的箱子是空的，主持人的箱子有1000顆球，其中有一顆<font color=orange>金球</font>，抽到金球就能獲得汽車，而其他都是<font color=blue>藍球</font>。現在主持人下令，你可以從這1000顆球中盲抽一顆，放入自己的箱子中，並把箱子關起來，這當中你無法看到抽到的球是什麼顏色。隨後主持人以你看不到的角度偷偷打開箱子，把998顆<font color=blue>藍球</font>拿出來。這時你跟主持人的箱子都只剩下一顆球，主持人提出你可以選擇要從哪個箱子抽球，你要抽哪個箱子的球？**

<br>

可以發現這是簡化版三門問題，只是為了讓換不換的結果差異性更大，因此改成一千顆球。

<br>

接下來我們搭配圖片來分析一下：


<br>


<img src="https://raw.githubusercontent.com/lewisjjj800soic/HackMD-images-backup/main/Mathematic-Theorems/04/01.png" alt="圖片描述" style="display: block; margin: 0 auto;" width="800">

<br>

在最一開始時，你的箱子是空的，主持人的箱子有1000顆球，其中有一顆<font color=orange>**金球**</font>。


<br>


<img src="https://raw.githubusercontent.com/lewisjjj800soic/HackMD-images-backup/main/Mathematic-Theorems/04/02.png" alt="圖片描述" style="display: block; margin: 0 auto;" width="800">

<br>


隨後你從這1000顆球中盲抽一顆，放入自己的箱子中，並把箱子關起來，這當中你無法看到抽到的球是什麼顏色。

<br>



<img src="https://raw.githubusercontent.com/lewisjjj800soic/HackMD-images-backup/main/Mathematic-Theorems/04/03.png" alt="圖片描述" style="display: block; margin: 0 auto;" width="800">

<br>

這時你可以很明確知道，你從這1000顆球中盲抽一顆，抽中<font color=orange>**金球**</font>的機率是 $\dfrac{1}{1000}$，而因為主持人的箱子還有999顆球，因此<font color=orange>**金球**</font>在主持人箱子的機率是 $\dfrac{999}{1000}$。

<br>



<img src="https://raw.githubusercontent.com/lewisjjj800soic/HackMD-images-backup/main/Mathematic-Theorems/04/04.png" alt="圖片描述" style="display: block; margin: 0 auto;" width="800">

<br>


這時主持人以你看不到的角度偷偷打開箱子，把998顆<font color=blue>**藍球**</font>拿出來，你跟主持人的箱子都只剩下一顆球。

<br>

**但這並不影響<font color=orange>金球</font>在主持人箱子的機率！**，因此機率仍然是$\dfrac{999}{1000}$。

<br>

也就是說，<font color=orange>**金球**</font>在主持人箱子的機率是 $\dfrac{999}{1000}$ ，而且他幫你把 **箱子中所有的<font color=blue>藍球</font>** 都挑出來了，剩下的那顆球就有極高機率就是<font color=orange>**金球**</font>。

<br>


所以當你可以從這兩個箱子中選擇時，兩個箱子中各剩一顆球，他們是不是金球的機率並不是分別為 $\dfrac{1}{1000}$ ，在你箱子中是 <font color=orange>**金球**</font>的機率為 $\dfrac{1}{1000}$ ，在主持人箱子中是 <font color=orange>**金球**</font>的機率為 $\dfrac{999}{1000}$ 。

<br>

因此，你應該要選擇你的箱子(中獎機率 $\dfrac{1}{1000}$) ，還是主持人的箱子 (中獎機率 $\dfrac{999}{1000}$) 呢？我想答案已經顯而易見了。

<br>

## **實驗**

<br>

最後，為了驗證上述的結果，我們可以利用Python來替我們模擬這個情況。

:::spoiler 點擊以查看程式碼
```python=
import random

# 定義一個名為 "Monty_Hall_Function" 的函式
# 其中 n 為給定門的數量，"Change" 則為布林值，如果布林值為 "True" 則換門，反之為 "False"
def Monty_Hall_Function(n, Change):

    # 跑車所在的門
    Car = random.randrange(1,n+1)
    #你選擇的門
    You_Pick = random.randrange(1,n+1)

    # 以下定義選擇的情況
    # 如果跑車門跟你選擇的門一樣，那選擇換門就不會中獎
    if(You_Pick == Car):
        if(Change):
            return False
        else:
            return True
        
    # 如果跑車門跟你選擇的門不一樣，那選擇換門就會中獎
    else:
        if(Change):
            return True
        else:
            return False
        
# 定義一個名為 "Monty_Hall_Test" 的函式
# 當中可以輸入 Monty_Hall_Test(實驗執行次數, 總共幾道門, 要不要換)
# 其中要換的話就輸入 "True"，反之則為 "False"
def Monty_Hall_Test(Number_of_Try, Number_of_Doors, Change):

    count = 0
    Win_Car = 0

    while( count < Number_of_Try ):

        #執行結果
        result = Monty_Hall_Function(Number_of_Doors,Change)

        if(result):
            Win_Car += 1

        count = count+1
    
    # 此次實驗贏得跑車的機率
    Prob = Win_Car/Number_of_Try

    print('總共有', Number_of_Doors, '道門')
    if(Change == True):
        print('如果換門的話：')
    else:
        print('如果不換門的話：')
    print(Number_of_Try,'次實驗中會贏得跑車', Win_Car,'次')
    print('贏得跑車的機率:', Prob)

    return Prob

```
:::

<br>

要實驗的話就可以輸入我定義的函式：
```
Monty_Hall_Test(實驗執行次數, 總共幾道門, 要不要換)
```
<br>

首先我們先來看看**不換門**的實驗結果：

設定「**實驗執行了十萬次，總共三道門，選擇不換門(輸入False)**」，輸入以下程式：

```
Monty_Hall_Test(100000,3,False)
```
<br>

接著就會輸出以下結果：

```
總共有 3 道門
如果不換門的話：
100000 次實驗中會贏得跑車 33334 次
贏得跑車的機率: 0.33334
```
>因為給定的程式是亂數隨機跑的，所以每次輸出的結果都會不太一樣。


---

那接著我們來看看如果選擇**換門**的實驗結果。

<br>

設定「**實驗執行了十萬次，總共三道門，選擇換門(輸入True)**」，輸入以下程式：

```
Monty_Hall_Test(100000,3,True)
```
<br>

接著就會輸出以下結果：

```
總共有 3 道門
如果換門的話：
100000 次實驗中會贏得跑車 66601 次
贏得跑車的機率: 0.66601
```
<br>

通過上面輸出的兩種結果可以看到：<font color=red>**選擇換門之後贏得跑車的機率真的比不換還要「多」大約** $\dfrac{1}{3}$ **。**</font>

---

那我們來看看**取球問題**的命題：


<br>


設定「**實驗執行了十萬次，總共1000顆球，選擇更換手裡的箱子(輸入True)**」，輸入以下程式：

```
Monty_Hall_Test(100000,1000,True)
```
<br>

接著就會輸出以下結果：

```
總共有 1000 顆球
如果更換手裡的箱子的話：
100000 次實驗中會贏得金球 99893 次
贏得金球的機率: 0.99893
```

>如果輸出的中文字要改變，print裡面的描述也要更改哦。

<br>

所以你可以看到，如果三門問題拓展成像**取球問題**一樣有一千道門的話，那更換選擇後贏得跑車的概率就會接近 $100\%$ ，因此<font color=red>**你該更換你的選擇**</font>。

<br>

**蒙提霍爾悖論**已經徹頭徹尾被我們以數學方法、窮舉法、簡化思考的方法揭開那名為**悖論**的面紗，最後更以程式模擬出結果，相信經過一輪各種知識激盪後，你可以更加理解所謂的**三門問題**。

<br>

當然在數學上還有很多值得細細品味的**悖論**，就如同先前說的一樣，我會一一介紹。

<br>

我是Lewis，我們[**下一篇**](https://hackmd.io/@lewisjjj800/r1z4qUxzxg)專欄見！








