問題描述
三門問題(Monty Hall problem)亦稱為蒙提霍爾問題儡炼、蒙特霍問題或蒙提霍爾悖論大年,大致出自美國的電視游戲節(jié)目Let's Make a Deal公壤。問題名字來自該節(jié)目的主持人蒙提·霍爾(Monty Hall)堤舒。參賽者會(huì)看見三扇關(guān)閉了的門,其中一扇的后面有一輛汽車誉碴,選中后面有車的那扇門可贏得該汽車宦棺,另外兩扇門后面則各藏有一只山羊。當(dāng)參賽者選定了一扇門黔帕,但未去開啟它的時(shí)候代咸,節(jié)目主持人開啟剩下兩扇門的其中一扇,露出其中一只山羊成黄。主持人其后會(huì)問參賽者要不要換另一扇仍然關(guān)上的門呐芥。問題是:換另一扇門會(huì)否增加參賽者贏得汽車的機(jī)率?
答案
答案是會(huì)奋岁。不換門的話思瘟,贏得汽車的幾率是1/3。換門的話闻伶,贏得汽車的幾率是2/3滨攻。
爭(zhēng)議
有人認(rèn)為,在主持人排除了一個(gè)門之后蓝翰,汽車只可能在另外兩個(gè)門中光绕,所以在兩扇門的概率各是1/2。
分析
首先參賽者選定了一扇門畜份,主持人未開啟門時(shí)诞帐,汽車在這扇門的概率為1/3,在另外兩扇門中的概率為2/3爆雹,此時(shí)爭(zhēng)議不大景埃。而另外兩扇門中必定至少有一扇是山羊,所以即使主持人指出這兩扇門中一扇是山羊顶别,并不會(huì)影響這兩扇門的概率谷徙,兩扇概率和仍為2/3,此時(shí)一扇已知是山羊驯绎,所以兩扇中的另外一扇是汽車的概率是2/3完慧。所以換門會(huì)提高概率。
思考
如果主持人開啟揭露一扇門是山羊后剩失,另外一個(gè)人B此時(shí)在剩下的兩扇門中做抉擇屈尼,并且他不知道其他信息,只知道一扇是汽車拴孤,一扇是羊脾歧,那么此時(shí)B選擇到汽車的概率是1/2。
這是因?yàn)闆]有之前的信息演熟,B不知道那扇門概率大鞭执,B此時(shí)是在兩扇門中做隨機(jī)選擇司顿,B可能有1/2的概率選擇A(參賽者)開始選擇的門,也有1/2的概率選擇A將要換的門兄纺。所以B選擇到汽車的概率為1/2 * 1/3 + 1/2 * 2/3 = 1/2大溜。
程序模擬
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
totalTimes := 1000000
aRightTimes := 0
bRightTimes := 0
rand.Seed(time.Now().UnixNano())
for time := 1; time <= totalTimes; time++ {
doors := [3]bool{false, false, false}
doors[rand.Intn(3)] = true
aFirstChoice := rand.Intn(3)
var hostChoice, aChangedChoice int
for i, door := range doors {
if i != aFirstChoice && !door {
hostChoice = i
}
}
for i, _ := range doors {
if i != aFirstChoice && i != hostChoice {
aChangedChoice = i
}
}
var bChoice int
if rand.Intn(2) == 0 {
bChoice = aFirstChoice
} else {
bChoice = aChangedChoice
}
if doors[aChangedChoice] {
aRightTimes++
}
if doors[bChoice] {
bRightTimes++
}
}
fmt.Println("totalTimes: ", totalTimes)
fmt.Println("aChangedChoice: ", aRightTimes)
fmt.Println("bChoice: ", bRightTimes)
}
結(jié)果符合預(yù)期,A換門后正確概率為2/3估脆,B隨機(jī)選擇正確的概率為1/2:
totalTimes: 1000000
aChangedChoice: 667407
bChoice: 499262
reference
問題描述引自百度百科