據說(只是據說)楚漢相爭之時,韓信為無聊的士兵們發明了一種紙牌游戲,因為牌面只有樹葉大小,所以被稱為“葉子戲”。而到元朝的時候,又據說中國人民的老朋友馬可·波羅同志將“葉子戲”帶入歐洲,進而演變成為如今的“撲克牌”(老馬被塑造得真辛苦,帶了N項發明到歐洲)。不過咱們今天要講的問題可不是撲克牌的發展史,而是歷來讓人絞盡腦汁的洗牌問題。具體一點就是:最少洗多少次能夠讓一副牌還原呢?
洗牌方法的確定
所謂無規矩不成方圓,在進行研究之前,咱們先得確立一種洗牌方法作為標準。這里就以使用廣泛的“交叉洗牌法”為例。當然了,為了便于量化討論,咱們這里所說的交叉洗牌法要能夠做到完美交叉,也就是每兩張牌互相交叉。舉個例子吧,從A到10的排列好的10張牌從中間分成兩疊,一疊是A到5,另一疊是6到10,那么完美交叉后10張牌的順序就只會有兩種:A,6,2,7,3,8,4,9,5,10或者6,A,7,2,8,3,9,4,10,5。說白了也就是第一張牌到底在上還是在下的區別,按照此區別,前一種被稱為“外洗”,后一種則被稱為“內洗”。為什么要做這樣的區別呢?玄機在于其實一次外洗可以看作是對少兩張牌的一疊牌進行的內洗,比如在剛剛的10張牌中,除去最后兩張9和10,那么剩下8張牌的內洗結果就是5,A,6,2,7,3,8,4,與10張牌的外洗結果順序一致。這樣一來的話,接下來的推理中我們只需要先考慮一種方法即可,那就是內洗。
循環洗牌的過程
快把你的思緒理清,讓我們進入讓人頭大的循環洗牌過程。對按照從小到大排列好的10張牌進行反復內洗……洗五次之后,10張牌的順序就會變成:10,6,2,9,5,A,8,4,7,3。也就是正好與最初的順序相反。以此類推,洗10次之后就會回到最初的順序。歸納一下可以得出,每洗一次牌,這10張牌就會沿著A→2→4→8→5→10→9→7→3→6→A的順序向前推進一步(如圖所示)。這樣看起來似乎很簡單嘛,有什么好講的?但問題在于這樣的1O張牌并不具有典型的代表性,因為它只有一種循環方式。如果是8張牌的話,你就會發現,一共有兩種循環方式:A→2→4→8→7→5→A以及3→6→3。很明顯,第一種循環每洗6次牌就回重復,而第二種循環每洗兩次牌就會重復。這樣交叉重復的結果就是,當一種循環第一次回到原點的時候,第二種循環已經重復3次了,也就是說其實洗了第6次以后,這8張牌就已經復原了。實際上在整副牌的循環洗牌過程中,這樣的情況更加居多,因此也是我們必須要加以考慮的。

推而廣之
其實我們可以發現,不管牌數的多少,各個牌的位置變動都可PAR剛剛的那8張牌一樣分為若干種循環。因此我們想要知道最少洗多少次能夠讓一整副牌還原的話,就得了解對于52張牌(去除兩張Joker)而言,到底有哪些循環,其中又有多少重復的情況是可以去除的。其實問題的關鍵在于一個很簡單的數學概念,那就是我們從小學起便熟知的“最小公倍數”。例如一疊牌一共包含兩種循環,第一種循環需要洗8次復原,第二種循環需要洗10次復原,那么第一個循環中的各張牌在洗了8次、16次、24次……后將回到其最初位置,而第\"k循環中的各張牌在洗了10次、20次、30次……后將回到其最初位置,也就是說這疊牌要回復到最初狀態,所需要的最少次數為8和10的最小公倍數:40。
如此一來是不是清楚了許多了呢?接下來就要找一找52張牌到底有多少循環,各需要幾次完成。說白了有點類似于找數組規律的問題,通過不斷地嘗試,我們可以發現當一疊牌有4張、6張、8張、10張、12張、14張、16張、18張、20張、22張和24張牌時,分別需要洗4次、3次、6次、1O次、12次、4次、8次、18次、6次、11次和20次牌才能復原。接下來就從這些數據人手找找規律吧……(此處省略若干字)……在耗費了大量腦細胞以后,終于得出結論:如果牌數為m,則用2的n次冪除以(m+1),直到其余數等于1,那么此時n的數值就是所需要的最少內洗數。比如在剛才的例子中,10張牌時210/11的余數正好為1,8張牌時26/9的余數也正好為1。按照該規則延伸,如果用2的n次冪除以(m-1),直到其余數等于1,那么此時n的數值就是所需要的最少外洗數。
總算有了確切的公式,接下來的問題就好辦了。用數字52帶入其中嘗試(找個余數計算器來用吧),可以發現252/53的余數為1,也就是說一副牌至少內洗52次才能還原,這……是不是感覺很蛋疼?沒關系,咱們再試試外洗,結果28/51的余數正好為1,也就是說一副牌最少只需外洗8次就能還原,看樣子還是外洗犀利啊。既然結果已經揭曉,本文也就到此為止了,最后奉勸各位童鞋,不要走邪門歪道去研究老千技巧,所謂小賭怡情,大賭玩命哦!