第44章 緣由(1 / 1)

蜘蛛紙牌中含有兩套標準撲克牌

玩家們一直在抱怨說不同的軟件存在偏差。具體來講,就是如果程序探測到了玩家的勝率很高,它可能就暗中操縱後麵的牌的次序來降低勝率。玩家本身也有可能被偏向從而發揮出最好水平。不過,通過一些基本的統計學手段,我們有可能對這種“偏向的指控”進行證實或者駁斥。這一點也可以作為一個很好的練習,來看看一個人是如何使用在現實世界觀察到的數據並配合統計學手段來判斷一個假說(比如“蜘蛛紙牌程序是有偏向性的”)是真的還是假的。

基礎知識

從本文的角度出發,我們這裏假設玩家在玩蜘蛛紙牌的時候不使用“撤銷”“重來”“加步”(把遊戲削減為一個簡陋的初始版本),這樣玩家就不用考慮計分、花費的時間以及移動的步數了。很多人都認為在這樣的條件下遊戲幾乎贏不了,但是加州州立大學長灘分校的史蒂夫·布朗在他出色的著作《蜘蛛紙牌獲勝策略》中給出了一些詳細的策略,並且提到在306局遊戲中可以取得48.7%的勝率。同時他也指出自己的玩法還不是完美的,那些專業玩家可以做得更好,甚至達到超過60%的勝率。我利用了布朗的這些策略進行了實驗,結果表明確實能夠達到超過48.7%的勝率。

理想情況下,電腦端蜘蛛紙牌遊戲能夠模擬真實情況下且洗牌充分的紙牌遊戲。如果在遊戲的任何一個節點,有 N 張牌還沒被看過,那麼每張牌都有 1/N 的可能性作為下一張翻麵的牌出現(為了敘述的方便,我們忽略了具有相同花色和大小的紙牌之間的等價性)。舉個例子,在起始位置我們知道有 10 張牌被亮了出來。因為總共的 104 張牌裏一共有 8 張 K,所以單張亮出來的牌是 K 的概率是 8/104\u003d1/13,因此亮出來的牌是 K 的期望張數是 10×1/13\u003d10/13。如果在玩了相當多局數的遊戲之後,我們發現亮出來K的數目平均下來接近 11/13,我們就有理由相信這款蜘蛛牌程序是有偏向性的。

測試數據

對於每一局遊戲來說我們都希望記錄一組能夠反映牌運氣好壞的數據,數值越高,證明獲勝的幾率越大。我們想到的一個方案是評估在一局絕對公平、無偏袒性的遊戲裏,這些測試數據的取值,再和我們懷疑可能存在偏向性的遊戲中記錄的數據值進行比較。

一旦最初的十張牌都確定下來,我們就能計算出“保證輪數(guaranteed turns,GT)”,即玩家在被迫更換至另一排之前能夠確定亮出的牌的最少數目。無論何時,當新的一排的十張牌已經確定下來後,我們都可以做一個類似的計算,假裝它是新的一局遊戲的開始。這樣一來我們就可以計算出GT的平均值(AGT)。如果幾輪下來GT的值很小,那麼玩家就要有麻煩了。要說明的是AGT和玩家本身無關,所以很容易通過進行很多次實驗(即確定很多排)來模擬出AGT的概率分布。

經驗來談,如果卡牌的整體分布比較糟糕的時候,玩家同樣會陷入麻煩。比如說有七張Q但是隻有兩張J沒有打出來的時候,即使你有一列或者多列已經清空,仍然會有問題出現。因此在這裏定義一個整體方差(total square variation,TSV),取值為相鄰大小的牌的數目的負的平方之和。在剛才的例子裏,七張 Q 和兩張 J 在求和時會貢獻出 -(7-2)2\u003d-25 一項。這裏取負值是為了確保 TSV 的增減性與獲勝概率的增減性一致,就和AGT一樣。每亮出一張新牌我們就計算一下TSV,這樣我們可以算出來單局遊戲的平均TSV(ATSV)。要提起注意的是ATSV同樣與玩家無關,我們假定玩遊戲的玩家會按照一個隨機順序把所有扣著的牌都亮出來(盡管玩家可以選擇先亮哪張牌,但是亮出的每張牌概率是一樣的)。幸運的是這一點可以通過模擬很容易就做到。