簡體 | 繁體

押寶的機率問題

過年的時候,一堆朋友聚在一起,免不了就擺起像右圖那樣的押寶賭局。這是很好玩的賭博,有膽的人輪流作莊家,其他的人就衡量自己能承擔的程度來押寶作賭客。不管有膽沒膽,想要贏的心情是一樣的,大伙在吆喝聲中,很快就帶動了新春的活力。

我們玩的壓寶,一般的規則是這樣的。有六個格子讓賭客來押錢,押好離手,莊家就向碗中擲出三粒骰子。三粒骰子之中,如果都沒有出現賭客押中的數字,錢就被莊家沒收;如果有一粒骰子符合,莊家就照賠,如果兩粒骰子符合,莊家就賠兩倍,如果三粒都符合就賠三倍。

從來就賭運欠佳的老五,輸了錢不服氣,很自然的跟朋友們吵起了莊家和賭客雙方各自的機率問題。爭吵的題目是:在這樣的規則之下,是莊家佔便宜還是賭客佔便宜?

一派人主張雙方都沒有佔便宜,因為從賭客的眼光來看,如果莊家擲一粒骰子,他就有六分之一的機率贏 (這一點大家都同意),所以,如果擲兩粒骰子,他就有六分之二的機率贏,現在是擲三粒骰子,就應該是六分之三、也就是一半的機率贏,反過來說,也就是一半的機率輸,所以雙方是完全公平的。

有人認為賭客佔便宜,因為他可能贏雙倍或是三倍,而莊家最多只能贏檯面上押的錢。

老五則直覺上認為應該是莊家佔便宜,但是在年糕、紅燒肉、約翰走路、紅酒、老母雞湯、葷素拼盤的交相作用之下,大家其實都是腦袋昏昏的,講不出所以然。僵持不下的結果,決定打個賭,老五和對方主將各出台幣兩千元,放到公正人士手中,等腦筋清楚了再來決定。

回家一想,問題還不是那麼簡單,要下結論還得花一些工夫才行,還好,對方也很灑脫,聲稱只要老五把整個問題說個清楚,就心甘情願的認輸,面對這樣的挑戰,老五自然是欣然接受。



先用十元硬幣代替骰子來作一個比較簡單的說明。

它的一面是老蔣頭,我們簡稱為 "頭",另一面是梅花,我們簡稱為 "花"。

丟硬幣跟擲骰子的道理是一樣的,只是每丟一個硬幣,押中的機率是二分之一而不是六分之一。

如果一次丟一枚硬幣,情況就很單純。假設賭客押一百元,那麼他贏的機率是 1/2,硬幣丟出去,他的數學期望值是五十元;但是他輸的機率也是 1/2,數學期望值就是負的五十元,所以,莊家和賭客是公平的。

但是,假設我們用兩枚硬幣而不是一枚,一枚稱為 A,一枚稱為 B。

A 幣丟下的時候,有 2 種可能,不是 A-頭,就是 A-花,而且兩者可能性完全相同。

B 幣亦然。

我們如果一次丟下兩個硬幣,它們的組合就有 2 * 2 = 4 種可能:A-頭配 B-頭,A-頭配 B-花,A-花配 B-頭,A-花配 B-花。基本前提是,如果是普通硬幣,沒有人去作手腳的話,那麼每一種組合出現的可能性完全相同。

我們假設賭客押了 "頭"。

在 4 種組合之中,賭客有 3 種組合是贏:A-頭配 B-頭,A-頭配 B-花,A-花配 B-頭 (因為,只要出了一個頭他就算贏)。因為這 4 種組合出現的可能性完全相同,所以我們知道他贏的機率是 3/4。

要用這樣簡單的組合方法來算最後的機率,有三個基本前提:第一,這些組合要涵蓋全部可能的情況;第二,每一種組合發生的可能性要一樣;第三,每一種組合要是互斥的 (即,一種組合發生的時候,其它的組合就不可能發生)。

用這樣簡單的思考,就可以算出賭客贏錢的 "機率",但是這還沒有到下結論的時候,因為我們在考慮莊家和賭客是不是公平對賭的時候,考慮的不應該是機率而應該是 "數學期望值"。譬如說,我們到賭場去賭輪盤,勝的機率只有三十七分之一,我們不會就此說那不公平,因為贏了就贏三十多倍!也就是說,賭客押好離手,莊家一出手,雙方的數學期望值必須是一樣的,才能說是公平的對賭。

如果大家在中學學過數學就會知道,在賭博這個課題中,數學期望值就是實得值乘上機率。譬如說你去買彩票,獎額是一百萬,中獎的機率是百萬分之一,那麼你這張彩票的數學期望值是一元。在這種情況之下,如果你買彩票的錢是一元,我們就可以說那是公平的對賭 (當然,實際的賭場或彩票情況一定是對賭客不公平的,否則就沒有人會來經營賭場或彩票了!)

在兩個硬幣的例子當中,莊家有贏和輸兩種情況。譬如說賭客押二十元,莊家贏的話就得二十元,而我們剛才已經算過了,莊家贏的機率是四分之一,那麼我們就可以說,當他兩個硬幣一擲下去的時候,他在贏的情況的數學期望值是五元。

因此,假設賭客在這一把贏的數學期望值也是五元,我們就可以說這是公平的對賭。我們剛才已經算出來,他贏的機率是 3/4,所以我們應該規定,他押二十元,贏的話只能得 20/3 元。

這邊要注意一點:第一個硬幣投下去,他贏的機率是 1/2,第二個硬幣亦然,但是總合來講,他贏的機率不是 1/2 + 1/2。也就是說,當天有人主張賭客贏的機率是 1/6 + 1/6 + 1/6 = 1/2 是不對的。

如果在中學時學過機率,那麼以上的情況是可以用簡單的數學式來算出來的。如果一次丟兩枚硬幣,賭客贏的機率是 1/2 + (1 - 1/2) * 1/2 = 3/4。在骰子來講,如果一次丟兩粒,賭客贏的機率是 1/6 + (1 - 1/6) * 1/6 = 11/36;像我們一次丟三粒,則賭客贏的機率是 11/36 + (1 - 11/36) * 1/6 = 91/216 (不是 1/2!)。

要作一個通式來計算這個機率則似乎相當困難,但是用電腦程式就很簡單。用 C 程式為例,我們可以作一個函式如下:
double calculate_probability (int cases, int multiple)
{
int int1;
double probability;

probability = 0;
for (int1 = 0; int1 < multiple; int1 ++)
{
      probability = probability + (1 - probability) * (1 / (double) cases);
}
return probability;
}

譬如說,我們用兩顆四面體的骰子,就如下呼叫這個函式就可以得到贏的機率:
probability = calculate_probability (4, 2);



再回到我們的賭博現場。

每一粒骰子靜下來的時候,都有六種可能的數字,一次擲 A B C 三粒骰子,總共的可能的組合就有 6 * 6 * 6 = 216 種。假設每一粒骰子和那個碗都作得很完美,則每一種組合的可能性都相同。

重點是,這 216 種組合符合了我們剛剛提到的三個前提,也就是說,當骰子擲下去的時候,發生的事情必然是 216 種組合的其中一種,而且必然只有一種,並且,每一種組合發生的可能性是一樣的。所以,我們可以用簡單的加減法和乘除法來作機率和數學期望值的計算。

首先,讓我們使用跟硬幣一樣的方式來看一看賭客和莊家雙方贏的機率。在這 216 種組合之中,每一粒都是有五種情況不符合賭客所押的數字,若三粒都不符合,就是莊家贏。這樣的組合有 5 * 5 * 5 = 125 種。也就是說,莊家贏的機率是 125/216。

反過來說,賭客贏的機率是 1 - 125/216 = 91/216 (就像我們前面已經算出來的)。

然而,我們剛剛才也說過了,機率不是答案,數學期望值才是答案。

現在,讓我們用更具體的例子,假設賭客押 216 元。這裡面有一個重要的觀點要釐清,就是賭客並不是像買彩票一樣把錢先繳納給莊家,如果是的話,那麼情況就應該是這樣:莊家已經收了彩票錢,在骰子擲出 (彩票開獎) 的時候不能再得錢,贏的數學期望值應該是零,而每一個賭客的數學期望值應該是 216 元才算公平對賭。

在押寶的情況,在骰子擲出之前賭客和莊家都沒有金錢的進出,賭客只是把 216 元放到檯面上作為一個宣告;那個錢的所有權還是賭客的,譬如說,如果大地震來襲讓賭場關門,則賭局作廢,那個錢是由賭客拿回去。在骰子擲出去以後,就有兩種可能的情況:如果賭客輸了,他就用桌面上屬於他的錢來付款,如果莊家輸了,也得從自己口袋中掏錢來付帳。所以,是不是公平對賭,必須要用雙方的數學期望值來作比較。



莊家的情況比較簡單,因為他贏的話就一定是贏 216 元,而我們算過,他贏的機率是 125/216,所以,他在這一把的贏面的數學期望值是 216元 * 125/216 = 125元。

問題是,他也可能輸,否則,他只要一直丟骰子,很快就發財了!所以,我們也要算賭客贏的數學期望值。賭客的情況遠較莊家複雜,因為他可能贏一、二、或三倍,所以,我們必須算出賭客贏一倍、二倍、三倍各自的數學期望值。

首先,怎麼算出贏一倍的數學期望值?也就是說,只有一粒的數字符合,其它兩粒都不對。

A 對 (只有一種可能),B 和 C 不對 (各有五種可能) 的組合,數目是 1 * 5 * 5 = 25 種;B 對、A 和 C 不對,C 對、A 和 B 不對,都是同樣的情況,因此,在 216 種可能的組合之中,一粒 (且只有一粒) 對的組合是 3 * 25 = 75 種。

只有一粒對,賭客贏 216 元,所以他在這邊所得到的數學期望值是 216元 * 75/216 = 75元。

再算二粒對的數學期望值。

假設是 A 和 B 對,C 不對:A 對的可能只有一種,B 對的可能也只有一種,C 不對的可能則有五種,因此,這有 1 * 1 * 5 = 5 種組合。同理,A、C 對而 B 不對的也是五種,A 不對而 B、C 對的也是五種,因此,二粒 (且只有二粒) 對的組合是 3 * 5 = 15 種。

二粒對,賭客贏 216元 * 2 = 432元,因此,他在這邊得到的數學期望值是 432元 * 15/216 = 30元。

三粒都對的組合只有一種 (所以機率是 1/216!),而賠率是三倍,所以賭客贏 216元 * 3 = 648 元,因此,他在這邊得到的數學期望值是 648 * 1/216 = 3元。

再綜合一次,在總共 216 種情況之中,125 種是莊家贏 216 元,75 種是賭客贏 216 元,15 種是賭客贏 432 元,1 種是賭客贏 648 元。再強調一次,216 種情況,每一種出現的可能性是一樣的。

我們假設賭客每次都押 216 元,莊家擲了 n 把。由於莊家贏的機率是 125 / 216,所以就機率來講,莊家會贏 n * (125 / 216) 次,而每一次他贏 216 元,所以他會贏 n * 125 元;同時,就機率來講,賭客會贏 n * (91 / 216) 次,但是他每次贏的錢不一樣,所以他贏的錢應該是 n * (75 / 216) * 216 + n * (15 / 216) * 432 + n * (1 / 216) * 648 元。也就是說,他會贏回 n * 108 元。

結論:賭客如果押 216 元,莊家三粒骰子擲下去,賭客每一把的數學期望值是輸 17 元!或者換句話說,莊家對賭客的贏面是 125/108。如果長期賭下去,賭得越久,越可能符合這個結果。



話說回來,就老五賭這種押寶的記憶所及,不管是作莊或作賭客都從來沒有贏過,而儘管作莊的數學期望值比較高,某一年一位朋友作莊連續通賠十多把 (每一個賭客都連贏十多把!) 的往事也一直為人津津樂道!所以,賭運往往比算數學期望值要重要,這是絕不會錯的。

話再說回來,俗語說 "久賭無輸贏",意思就是說,賭運多半有起伏,經過太多次的賭博以後,賭運多半就被平均了;只要是公平對賭,多半不會有輸贏。在經營賭場的情況,是由更多的次數組合成的結果,所以跟數學所算出來的結果更是不會有太大的出入;只要在設計上贏的機率比較大,就有近乎絕對的獲利把握。當然,對賭客來說,就變成了 "久賭必輸"。