<style> .red { color: red; } .blue{ color:blue; } </style> # 三門問題 ![](https://hackmd.io/_uploads/rkrkuwhun.png) 你今天參加了參與了一場遊戲,看到了三扇關起來的門。 這三扇門中有其中一扇後面有一台車子,令外兩扇後面各有一隻山羊。 接著主持人請你選擇一扇門,若是選中的門打開後是車子,則可以將車子開回家, 反之則是拿不到任何東西。 在你跟主持人說好你決定選擇了哪一扇門之後,主持人此時刻意打開了另外兩扇中後面有著山羊的一扇門,山羊對你咩了一聲,:goat: 咩~~~ <img src="https://hackmd.io/_uploads/SJVyqPnOh.png " style="display:block; margin:auto; center; width:50%" /> <br> 接著主持人說他給你一次機會重新讓你從兩扇門中做選擇, **<span class=red> <font size=5>此時睿智的你會照舊,不改變原先的選擇,還是會換門呢?</font> </span>** ==**你可能會想說因為一扇門被打開了,因此這相當於我從兩道門中選一道出來,因此換門與不換門後是出口的機率是1/2,有換沒換都沒差**== 難道不是嗎 :question: :question: :question: **<font size = 5 class=red>難道不是 1/2 嗎??? </font>** <img src="https://hackmd.io/_uploads/ryDjvs0_3.png" style ="display:block; margin:auto; center; width:50%"/> # 讓我們算一下機率吧 :game_die: ### Way1 讓我們簡單地分析一下,今天要是我不換門,則相當於我從三扇門中選一扇門出來,因此很簡單地可以得知機率 $$P(不換門)=1/3,$$ 所以換門後是獎品的機率則是 $$1-P(不換門)=1-\frac{1}{3}=\frac{2}{3}.$$ ### Way2 方便起見,讓我們先將三扇門分別以編號 "A", "B", "C" 稱呼, 則樣本空間總共會有9(3x3) 種可能,如下圖 **p.s.<span class = red>紅色代表獎品所在的門</span>,<span class=blue>藍色代表你選中的門</span>,兩扇門一樣時筆者省略藍色不畫.** ![](https://hackmd.io/_uploads/S1efRj0_3.png) 不失一般性,假設今天獎品在 A 門,若是你選擇了 B 門,則主持人會打開 C 門, 此時你選擇換的話,則會中獎,反之若是你選擇 C 門,同理,主持人會打開B 門,你一樣會中獎,所以獎品在 A 門的話種共有兩種可能性會中獎。 但今天獎品可能也會在 B 門或是 C 門,因此會中獎的可能性有六種(上圖被綠框框住的樣本點都是會中獎的),而樣本空間共有九種可能,因此 :::info $$P(換門後中獎) =6/9=2/3$$ ::: 同樣的分析,我們可以得知選擇不換門的機率為 1/3. # 若你還是不相信.... :thinking_face: 如果是1/2的話,同理,今天門換成10,000,000道,你選了其中一道,剩下( 10,000,000-2)背後不是獎品的門被打開,現在只有兩扇門,這樣 P(不換門後是獎品) 也會是 1/2 才對, 但你再仔細想想,應該是不太合理吧,門有一千萬道,但我不換門後是獎品的機率是50%,這不合理吧!!! 按照上面的一開始的分析(Way1),其實不換門後是獎品的機率應該是 $\frac{1}{10,000,000}$,是個微乎其微的數字。 因此我們可以知道若是有 N 扇門,你選擇了一扇後主持人打開了不是背後不是獎品的 N-2 扇門,則你不換門中獎的機率是 1/N,交換後中獎的機率是 $$\frac{N-1}{N}, N\geq 3.$$ 接下來,讓我們用 python 模擬,驗證一下若是有 N 扇門,換與不換的機率吧~~~ # Python 模擬 Code ```python= import random #令 n 為所有的門數, change 為布林值,代表是否要換門,換的換值為 True,反之為 False def threeDoor(n, change): # 獎品所在的門 prize = random.randrange(1,n+1) #我們選擇的門 doorWePick = random.randrange(1,n+1) # 如果獎品的門跟我們選擇的門一樣,交換的換則不會中獎,反之則中獎 if(doorWePick == prize): if(change): return False else: return True # 如果獎品的門跟我們選擇的門不一樣,交換的換則會中獎,反之則不會中獎 else: if(change): return True else: return False # ThreeDoorTest def threeDoorTest(numberWeTry, numberOfDoors, change): count = 0 winPrize = 0 while( count < numberWeTry ): #執行結果 result = threeDoor(numberOfDoors,change) if(result): winPrize += 1 count = count+1 prob = winPrize/numberWeTry print(numberWeTry,'次選擇中猜中了', winPrize,'次, 門的數量', numberOfDoors) print('實驗完後機率:', prob,', 是否換門:', change) return prob #執行三門問題的測試 threeDoorTest(100000,3,True) threeDoorTest(100000,3,False) threeDoorTest(100000,100,False) ``` <font size=4>**模擬結果**</font> ![](https://hackmd.io/_uploads/rJRu4nCu2.png) 三扇門時,我們可以看到不換門的機率模擬出來大約是1/3, 換門後的機率模擬出來大約是2/3。(~~不要去介意為何上面三扇門換和不換的兩項機率加起來不是1~~) 而今天若是100扇門時,實驗100,000萬次後不換門得到的機率大約是 1/100 = 0.01. # 結論 1.換門後是獎品的機率比不換門後是獎品的機率高,但選到山羊也不錯,因為代表你選到了 the Greatest Of All Time. (~~不過說實在的,會中就是會中,不會中就是不會中,冥冥之中自有安排吧,因此也不用太糾結要換門和不換門吧~~) 2.這個問題被又稱作「Monty Hall problem」,三扇門的情況是最讓人混淆的,據說數學家保羅·艾狄胥起初也覺得三扇門換和不換的機率是一樣的。 > [time=Sun, Jul 2, 2023 16:39 PM]