论文部分内容阅读
据说(只是据说)楚汉相争之时,韩信为无聊的士兵们发明了一种纸牌游戏,因为牌面只有树叶大小,所以被称为“叶子戏”。而到元朝的时候,又据说中国人民的老朋友马可·波罗同志将“叶子戏”带入欧洲,进而演变成为如今的“扑克牌”(老马被塑造得真辛苦,带了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次就能还原,看样子还是外洗犀利啊。既然结果已经揭晓,本文也就到此为止了,最后奉劝各位童鞋,不要走邪门歪道去研究老千技巧,所谓小赌怡情,大赌玩命哦!
洗牌方法的确定
所谓无规矩不成方圆,在进行研究之前,咱们先得确立一种洗牌方法作为标准。这里就以使用广泛的“交叉洗牌法”为例。当然了,为了便于量化讨论,咱们这里所说的交叉洗牌法要能够做到完美交叉,也就是每两张牌互相交叉。举个例子吧,从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次就能还原,看样子还是外洗犀利啊。既然结果已经揭晓,本文也就到此为止了,最后奉劝各位童鞋,不要走邪门歪道去研究老千技巧,所谓小赌怡情,大赌玩命哦!