近日復習概率論(mathematics for computer science)的時候讀到了一個有趣的例子,在這里分享一下。都是一些非常簡單好玩的概率知識,學數學的同學請繞道...勿噴。 😉
這是一個平淡的星期天,你像往常一樣在酒吧喝酒,順便思考一下MMU分頁機制的原理。
過了一會兒,一個彪形大漢坐到了你的旁邊,點了幾杯伏特加開始狂飲。正當你想到內核如何通過虛擬地址更改頁目錄和頁表的時候,他開口了。
“小兄弟,玩骰子嘛?”
“不好意思,我不賭博。”
“嘿,我這可不是賭博,而且規則簡單的很,要不要聽聽?”
你覺着反正也是閑着,就看看他葫蘆里賣着什么葯,於是說到:
“行,你說說是怎么個玩法?”
壯漢便從口袋里攥出三枚骰子,扔在桌子上:

“我這有三枚骰子,每一個都有6面,和普通骰子不一樣的地方在於,每個相對面的點數是一樣的,也就是說每個骰子只有三種點數,例如A骰子投出2、6、7的概率都是1/3. 咱們兩每人下注100塊,選一個骰子扔一下,誰點數小就輸給對方,如何?”
發現骰子有些奇怪,你陷入了思索,B骰子有一個最大的點數9,而A骰子似乎有6和7這兩個都不小的點數...
壯漢看出了你的懷疑,又說“小兄弟,這樣,你先選骰子,我后選,這樣如何?”
聽起來不錯。
”那我選B骰子“。隨后壯漢拿起了A骰子。接下來就讓我們分析一下你輸掉的概率。
A vs B
首先我們找出所有的樣本空間:

然后我們找到壯漢能夠獲勝的樣本,一共有5個:

由於骰子上每一個點數出現的概率都是1/3,而且兩個骰子是互相獨立的,所以每一個樣本出現的概率都是1/9. 如下圖所示,你輸掉的概率是5/9 😦

在你輸掉100元后,壯漢將其歸咎於你的壞運氣,並勸你再來一盤。不過你現在只剩下打車的25塊了,為了“幫助”你回本,壯漢提出,接下來這一盤你不用下注,如果你贏了就把剛剛贏的100塊還給你,但要是輸掉的話就欠他100塊。考慮到剛剛已經吃了一個教訓,這次應該能贏,你答應了他。
這次你選擇A骰子,壯漢隨后選擇了C骰子。我們再來分析一下你輸掉的概率。
C vs A
和上一盤一樣,我們很容易就算出——你還是有5/9的概率輸掉 😦

現在,你欠壯漢100塊了,當你正考慮待會兒怎么跑掉時,壯漢”慈愛“答應再給你一次免下注的機會。
emmmm... A可以贏B,C可以贏A,那選C肯定沒錯了。於是你繼續與壯漢展開斗爭,這次,壯漢選擇了B。
B vs C
和前兩盤一樣,我們可以很容易計算出結果——你還是5/9的概率輸掉,又輸了!
這怎么可能!A扔出的點數會比B更大,而C扔出的點數會比A更大,那C扔出的點數會什么會比B小呢??
這就是直覺帶來的錯誤,在生活中很多東西滿足傳遞性,很可惜,這里的概率不是。也就是說,只要你先選骰子,壯漢總是更可能贏!
於是,這一天你穿着內褲走回了家。
又是一個平淡的星期天,你穿着新買的衣服在酒吧休息,心想着下次再碰見壯漢一定要后扔骰子,把輸掉的錢贏回來。果然,沒過多久,壯漢出現了。
他聽了你的要求,竟然欣然同意,但是建議這次玩大的——選完骰子后,每個人扔兩次,把兩次的點數之和作為輸贏依據,每次下注200元。
emmmm... 扔兩次,你想既然每一次扔骰子都更可能比壯漢大,扔兩次更應該是這樣了,於是便同意了。壯漢選擇了B骰子,你知道A骰子比B骰子更可能扔出高點數,於是便選擇的A骰子。
真的是這樣嗎?
Wrong!
Rolling Twice
和前面的算法相同,由於每個人要扔兩次骰子,總的樣本數就是(3*3)*(3*3) = 91種,如下圖所示:

可以看到,扔兩次A骰子可能的樣本為:

而扔兩次B骰子可能的樣本為:

所以A戰勝B的總樣本數為1+3+3+3+3+6+6+6+6 = 37個,而B戰勝A的總樣本數為42個(剩下的為平局)。即扔兩次B更有可能獲勝,和扔一次的情況矛盾!
看來,直覺又一次欺騙了我們,每一次扔出的點數都更可能高,但是兩次扔的和卻更可能低。事實上,在我們扔一個骰子比大小的時候,獲勝的概率排序為 A > B > C > A, 而扔兩個骰子的時候概率是反過來的,即A < B < C < A.
人們總是說“搶占先機”,但又說“后發優勢”。從上面的例子也可以看出,先行動不一定就能占據優勢,而后發也不一定就是好事,這正是統計學上的詮釋。總之,在數據的概率上,不要相信生活經驗/直覺,而是應該從數學的角度分析判斷。另外,書上在講條件概率的時候也提到了一個好玩的[辛普森悖論](https://baike.baidu.com/item/%E8%BE%9B%E6%99%AE%E6%A3%AE%E6%82%96%E8%AE%BA/4475862?fr=aladdin), 感興趣可看看。
