在別處看到的一個有意思的問題,大致意思是這樣的:
有三個不透明盒子,1、2、3,其中一個盒子裝有一百美元,另兩個是空的。假設你選擇了1號盒子,然后通曉一切的上帝告訴你3號盒子是空的。那么現在,你會改變你的選擇嗎?
上網一搜,原來這是著名的Monty Hall problem,也稱三門問題。我研究了好半天,一直沒法沒轉化成概率模型,因此很難用科學的方法得出結論。直覺告訴我,選1選2的概率都是50%,然而維基了一下后,發現掉入陷阱中去了。既然這個問題這么有趣,那么不妨在這里做個梳理。
方法一:直覺上的方法
上帝的作用是幫你排除掉一個選項,本來盒2或3里有美元的概率為2/3,現在3里沒有,所以盒2里有美元的概率為2/3。
方法二:更加巧妙的直覺
只需理解一下兩件事情的等價關系:
if 換了且最后拿到美元,then 盒1里沒有美元。
if 盒1里沒有美元, then 換了且最后拿到美元。
根據等價性,P(換了且最后拿到美元)=P(盒1里沒有美元)=2/3
方法三:數學方法
先用我所能接受的最正統的方法來做這道題:
設X1為事件“選擇盒1”,Y3為事件“上帝選擇盒3”,Hi表示事件“盒i里有一百美元”。
那么P(Hi)=P( Hi | X1)=1/3,這是顯然的。
那么問題就轉化為求P( H1 | X1, Y3) = ?
很容易想到Bayes法則,即:
那么現在問題就是求得P( Y3 | X1, Hi)。這也是問題的核心所在。
- P( Y3 | X1, H2)=1
- P( Y3 | X1, H3)=0
- P( Y3 | X1, H1)=1/2
一旦有了P( Y3 | X1, Hi),答案也有了:
P( H1 | X1, Y3) = 1/3,P( H2 | X1, Y3) = 2/3
換可以有更大機會拿到美元。
方法四:編程( R ):
仿照知乎上一位大神運用C語言的做法,我用R跑了一遍。代碼和結果如下:
x<-sample(1:3, 10000, replace=TRUE) #x表示10000次模擬中,美元藏在哪個盒子里
for(i in 1:10000)
{
if (x[i]==1)
open[i] <- sample(2:3, 1) #當1號盒子里有美元,上帝隨機打開2或3號盒子
else if(x[i]==2)#當2號盒子有美元,上帝打開3號盒子
open[i]<-3
else
open[i]<-2#當3號盒子有美元,上帝打開2號盒子
}
table(x)[["1"]]/table(open)[["3"]]#求出當open3號盒子情況下,不換且贏的概率
結果為:
[1] 0.674777
這種方法其實本質上沒什么優越性,只是看著bigger很高。
如此一來,我就介紹完我知識范圍內的這幾種做法了。