斗地主、变魔术,扑克牌洗几次才够?

作者: matrix67

来源: 果壳

发布日期: 2018-11-14

本文讨论了扑克牌洗牌的次数对牌序随机性的影响,指出3次洗牌远远不能把牌洗开,而7次洗牌才能使牌序足够随机。文章通过数学模型和实际例子,详细解释了洗牌次数与牌序随机性之间的关系。

玩扑克牌的时候,永远不要以为,洗个两三次就能把牌洗开了。很多扑克牌小魔术就利用了3次洗牌远远不能把牌洗开的秘密。举个例子,我拿出一副新牌给你,由你来负责洗牌。哗啦啦洗一次、再洗一次,你觉得还没洗开对吧?那就再洗一次,一共洗3次,这也是很多人的习惯。然后,请你偷偷看一眼最上面的那张牌,记下它的花色和点数,接着把它插到这摞牌中间某个位置去,再把整副牌给我。信不信?我能挑出这张被动过的牌。

洗牌两三次远远不够。魔术的原理正如上文所说:把一摞排列有序的牌洗3遍,并不会让整副牌完全无序,排列顺序会有一个很强的规律。移动最上面一张牌的位置会破坏掉这个规律,从而露出马脚来。为了更方便地做进一步说明,我们下面只用13张牌来举例。由于这是一副新牌,初始时这13张牌是有序的:洗一次牌就相当于把上面这个序列分成前后两半,然后交错构成一个新的序列。

因此,洗完一次牌后,依次寻找A, 2, 3, ..., J, Q, K的位置,你会发现它们形成了2个“上升序列”(分别用两种颜色标了出来)。那么,再洗一次牌会对这个序列造成什么影响呢?容易看出,第二次洗牌将会把每个上升序列都截成两半,然后再次相交错,得到4个上升序列(分别用四种颜色标了出来)。如果此时把末尾的那张7移到中间去,你会发现这会打破“4个上升序列”的规律。

因此,我们很容易辨认出,在下面的扑克牌序列中,7本该放在后面。但是在上面的例子中,这些上升序列都很短,理论上平均长度仅为13/4=3.25。因此如果对方洗牌技术不佳,魔术有出错的可能。不过,如果把52张牌洗3次,将产生8个上升序列,平均每个上升序列的长度为52/8=6.5,魔术表演的问题就不大了。最少得洗多少次?

我们可以借助“上升序列”的思路来证明,5次洗牌也不能把牌彻底洗均匀,因为有一些排列永远不能仅用5次洗牌得到。不妨假设初始时扑克牌的顺序是1, 2, 3, …, 51, 52,5次洗牌后最多会产生25=32个上升序列。但是52, 51, …, 3, 2, 1这个排列中有52个上升序列,因此5次洗牌是绝对洗不出这样的排列的。

事实上,所有上升序列数量超过32的排列都是5次洗牌无法得到的,这就证明了5次洗牌也不能把牌洗均匀。看来,要想把牌洗开,6次是必需的了。7次洗牌才稳妥。那么,究竟要洗多少次牌,才能让所有排列出现的概率大致相同呢?你别说,还真有人做过这样的研究。

1992年,佩尔西·戴康尼斯(Persi Diaconis),美国数学家兼专业魔术师,与哥伦比亚大学的戴夫·拜耳(Dave Bayer)一道,为交叉洗牌法建立了一个数学模型,分析了包括上升序列在内的扑克牌排列性质,定义了m次洗牌后得到的排列分布与平均分布之间的“总变差距离”,最后发表了一篇20页长的论文。

他们计算出,当扑克牌有52张,洗牌次数分别为1, 2, ..., 10时,总变差距离分别为1.000, 1.000, 1.000, 1.000, 0.924, 0.614, 0.334, 0.167, 0.085和0.043。可见,5次洗牌才能让整副牌呈现出随机性,直到第7次洗牌才会让随机性显著增加;并且在此之后,总变差距离将大致以1/2的比例依次递减。因而他们的结论就是:7次洗牌才足够随机。

他们还对这个问题进行了渐近意义上的分析:当n足够大时,需要的洗牌次数大约为3 log2n/2。

UUID: 7bad1ad0-8da6-42d0-8d35-f6593c3ba234

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/果壳公众号-pdf2txt/2018/2018-11-14_斗地主、变魔术,扑克牌洗几次才够?.txt

是否为广告: 否

处理费用: 0.0039 元