一、問題描述
羊車門問題(Monty Hall problem)是一個以概率為基礎的統計學問題。問題的描述如下:
假設你在選獎品,有三扇門,在其中一扇門後面有一輛汽車,而在另外兩扇後面分別是兩隻山羊。你選擇其中一扇門,主持人知道門後面是什麼後,打開另外兩扇門中的一扇,露出裏面的山羊。現在你有選擇是否更改自己選擇的權力,請問您更改選擇後,獲得汽車的概率增加還是減少?為什麼?
二、統計概率分析
先考慮沒有更改選擇時,獲得汽車的概率。初始時,獲得汽車的概率是1/3,而獲得山羊的概率是2/3。選手選擇其中一扇門,此時如果選手的選擇是汽車,主持人隨意打開一扇門露出山羊,那麼選手獲得汽車的概率就是1/3。如果選手的選擇是山羊,主持人也必須打開另一扇有山羊的門,此時選手更改選擇,則可以獲得汽車的概率就是2/3,相對於不更改選擇的1/3,概率提高了。
繼續考慮更改選擇時,獲得汽車的概率。初始時,選手先隨便選擇一扇門,此時獲得汽車的概率是1/3。主持人會打開一扇有山羊的門,如果此時選手更改選擇,則可以獲得汽車的概率就是2/3,而不更改選擇,則獲得汽車的概率就是1/3,概率也提高了。
三、代碼實現
以下為Python代碼實現:
import random
def choose_door():
doors = [0, 0, 0]
doors[random.randint(0, 2)] = 1
return doors
def goat_door(guess, doors):
i = 0
while i == guess or doors[i] == 1:
i += 1
return i
def switch(guess, goat_door, doors):
i = 0
while i == guess or i == goat_door:
i += 1
return doors[i]
def game(switch_doors):
doors = choose_door()
guess = random.randint(0, 2)
goat = goat_door(guess, doors)
if switch_doors:
guess = switch(guess, goat, doors)
return doors[guess]
wins_no_switch = 0
wins_switch = 0
for i in range(10000):
if game(False) == 1:
wins_no_switch += 1
if game(True) == 1:
wins_switch += 1
print("No switch wins:", wins_no_switch)
print("Switch wins:", wins_switch)
四、執行結果
執行以上代碼,輸出結果如下:
No switch wins: 3324 Switch wins: 6747
可見當更改選擇時,獲勝的概率更高。
原創文章,作者:EUKOV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/333660.html
微信掃一掃
支付寶掃一掃