今天教教大家如何完美洗牌

500

喜欢魔术的朋友经常会为魔术师眼花缭乱的手法感到惊奇。纸牌魔术就是魔术师们经常表演的一种魔术形式。魔术师在使用纸牌进行魔术表演的时候经常会涉及到“洗牌”的操作。今天我们就带大家来看一看洗牌的“魔法”。

撰文 | Rachel Thomas

翻译 | Dannis

审校 | C&C

你是怎样洗牌的呢?我们许多人的洗牌方式都很不起眼,甚至有的朋友就是把牌铺在桌子上摊成一堆,再把牌打乱。今天您算是来着了,我们来讲讲怎么像一个专业人士一样洗牌。

如何完美洗牌

拿一副牌然后把他们分成数量相等的两摞(我们假定你手里拿的是一副标准的52张的扑克牌,也就是说有偶数张)。现在我们把这两摞牌完美地交叠排列,也就是说按这样的顺序:第一摞的第一张牌、第二摞的第一张牌、第一摞的第二张牌、第二摞的第二张牌,以此类推。这样洗好的牌就是所谓的“完美洗牌”(perfect shuffle)。

威尔·休斯敦展示如何完美洗牌(来源:https://youtu.be/2TTrHmFC2bM),前往“返朴”观看视频。

在进行了一次完美洗牌操作后,你的牌组会被按照两种方式中的一种被洗牌重组。如果你的第一摞牌是原来牌组的上半部分,那么洗好之后的牌组的第一张牌就是原来牌组的第一张牌,而洗好之后的牌组的最后一张牌则是原来牌组的最后一张牌——这就是所谓的“外洗法(out-shuffle)”,这样一来牌组的首张牌和最后一张牌相当于是固定住了,它们保持了原始的位置。而其他的牌则是被交叠在了一起。

如果你和我们一样都不是魔术师的话,你可以一步一步、一张一张慢慢来完成这个洗牌操作。如果你是一个纸牌玩家,或者是像威尔·休斯敦这样的杰出魔术师,你可以几乎瞬间完成这个操作!

如果你交换一下你的两摞牌组,再按照同样的方式把这两摞牌交叠起来,就可以得到另一种洗牌方式,即所谓的“内洗法(in-shuffle)”。

假设你的牌组有12张牌,它们由上到下按这个顺序排列:

A,2,3,4,5,6,7,8,9,J,Q

我们把它们从中间分成两摞:

第一摞是A,2,3,4,5,6;第二摞是7,8,9,J,Q

那么外洗法就是把牌按照这个顺序重新排列:

A,7, 2, 8, 3,9,4,10, 5, J, 6,Q

第一张牌是A,最后一张牌是Q,和洗牌之前的原始牌组中的位置是一样的。

这次我们先交换一下牌组,因此第一摞牌就变成了原始牌组的下半部分:

7,8,9,J,Q

而原始牌组的上半部分变成了第二摞牌:

A,2,3,4,5,6

内洗法就是把牌组按这个顺序重新排序:

7,A, 8, 2,9, 3,10, 4,J, 5, Q, 6

有了完美洗牌之后,魔术师能做什么?

500

魔术师威尔·休斯敦

我们有幸可以看到常驻伦敦帝国学院和皇家音乐学院表演科学中心的魔术师威尔·休斯敦是怎样进行完美洗牌操作的。如你所见,威尔·休斯敦对纸牌仿佛有着魔法一样的掌控力,他甚至可以进行完美洗牌的变种操作——从一张一张交叠变成两张两张交叠。他对纸牌的操纵令人难以置信。

“魔术师对于把不可能的是变为现实很感兴趣,”休斯敦说。“能够知晓牌组被搞混搞乱后会发生什么也属于这一范畴。”假如你想从一个排列成特殊顺序的牌组开始,但是又想让观众以为牌组已经被完全洗乱。“魔术师不会只靠嘴皮说服观众的!”休斯敦向我们保证。

“我们知道外洗法可以保证牌组的首尾两张不变。对于一副标准的52张的扑克牌,如果你利用外洗法进行了八次完美的洗牌操作,整副牌组最后都会恢复到原始的顺序。诚然这会费一点时间,但如果你想在一开始搞一点小把戏,让观众以为你已经把牌组完全洗乱了,不妨就连续做八次外洗法洗牌。其他人百分百会相信牌组已经被洗乱了,因为他们确实看到你把牌混了好几次,但事实上牌组已经按照你想要的顺序准备好了。”

来一点数学吧!

下面来点数学!我们看看为什么八次“外洗”之后牌组会复原。我们对休斯敦所说的八次外洗法能够把52张扑克牌组成的牌组复原这件事深感好奇!事实上有许多数学上的方法可以对此进行证明。但是我们要介绍的是一种最直接明显的方法。这种方法由数学家——同时也是一位魔术师,Tori Noquez提出。

这里我们感兴趣的是原始牌组中卡牌的顺序,所以我们不管牌的大小和花色,只把它们按照在原始牌组中的位置进行标号。同时为了在数学上方便一点,我们把最上面也就是第一张牌标记为0,第二张牌为1,以此类推。假设我们手头有一副标准的52张的扑克牌(事实上这种数学上的标记对于任何偶数张数的牌组都是适用的),我们把这些牌标记为:

0,1,2,3,…,49,50,51

这里0代表第一张牌,51代表最后一张牌。

外洗法首先将牌组分成两摞,上半部分作为第一摞牌(0,1,…,25),下半部分作为第二摞牌(26,27,…,51),再把它们按照下面的顺序排列:

0,26,1,27,2,…,24,50,25,51

500

第一张牌,也就是标号为0的牌,在洗过之后仍然在第一位,也就是0位置。同样最后一张牌仍然是标号51的牌,所以我们只关心中间部分也就是标号1到50的牌在外洗操作前后发生了什么就可以了。

第一摞牌也就是原牌组上半部分,标号x满足1≤x≤25的牌,在一次外洗操作后被移到了位置2x,也就是说标号1的牌现在在位置2,标号2的牌在位置4,以此类推,最后标号25的牌在位置50。

而第二摞牌也就是原始牌组下半部分的牌,标号x满足26≤x≤50,在新牌组中它们被移到了位置2x-51。也就是说标号为26的牌在位置1(因为2×26-51=1),以此类推最后标号50的牌在位置49。

运用一点模计算的知识,我们可以把上面的这种变化表示为同一条法则:标号x的牌在新的牌组中被移到了位置“2x(mod 51)”。

所以对于标号x(其中1≤x≤50)的卡牌:

一次外洗操作使得卡牌移到了位置2x(mod 51);

两次外洗操作使得卡牌移到了2^2x(mod 51);

以此类推,一般情况,k次外洗操作把标号x的牌移到了位置2kx(mod 51),为了把牌组复原成原始顺序,我们需要找到满足下面关系式的k:

2^kx ≡ x(mod 51)

也就是满足关系式:

2^k ≡ 1(mod 51)

2的幂次的前八个的数值如下:

500

从这里我们可以看到八次外洗操作就能够把我们的牌组复原了,这也是通过外洗法复原牌组的最小次数。

同样的数学技巧可以针对任意数量N的牌组(但是要记住这里的N是偶数,这样你才可以把牌组等分)。要使得牌组顺序复原的话,我们需要找到满足下面关系式的最小的k值:

2^k ≡ 1(mod N-1)

所以k次外洗法操作就把N张牌组成的牌组复原了。

如果是不完美洗牌,魔术师能做什么?

500

把牌直接搞乱混在一起是我们最熟知的一种“不完美”洗牌方法

所谓“不完美”的洗牌也就是通常我们认为的正常的、公平的洗牌。“不完美的洗牌可能也是最好的洗牌,因为洗牌本身的目的就是把纸牌混成随机的顺序。”休斯敦如是说道。要想做一次不完美的洗牌,你可能要把牌大概其分成两半,然后把两部分的牌按一个随机的顺序重新排列,比如随机替换两三张牌,当然也可以换一张牌。正是两部分的牌重新交叠排列的方式体现了随机性,而这也正是使得一次洗牌是“公平的”的关键所在。

数学家们对“不完美的洗牌”也很感兴趣。Persi Diaconis是一位统计学家,同时也是一个杰出的魔术师,他主要做一些工作来寻找把一副牌组随机混合的最优洗牌次数。Diaconis研发了一个流程,可以先把后面三分之一的牌拿掉,然后把剩余的牌近似分成两部分,再按照之前描述的方案进行一次不完美洗牌操作,最后再把之前拿掉的三分之一的牌放在最上面。“如果你把这个程序重复七次,就会得到洗牌次数的最佳平衡并且最后把牌的顺序彻底打乱。”

这个数学上的见解在诸如赌场一类的场所是很有用的,因为在这些场所人们获取到的钱的数目很依赖洗牌的随机性:“牌洗得越公平随机,对于赌场而言是越有利的,因为他们可以充分利用他们在游戏规则中的数学优势。这意味着他们会比玩家赢得更多。”然而每次庄家洗牌的时候玩家并不是在打牌或者下注,所以赌场需要制定一个洗牌的流程来平衡他们从玩家手中拿到的赌注的数目。

完美的魔术

不完美洗牌的目的在于你不想得到一副有特定的、可以预测的顺序的牌组。一想到牌组的特殊顺序,我们想的就是牌组按大小顺序、按花色顺序排好,就像我们新买的扑克牌组一样。但是休斯敦的一个最有意思的纸牌魔术就是基于上述我们对于牌组顺序的固有认知。

威尔·休斯敦和吉姆·卡特在节目The Next Great Magician中

(视频链接:https://vimeo.com/191677714)前往“返朴”观看视频。

在休斯敦和他的观众把牌组完全混合好之后,我们毫不惊讶地发现,这些牌已经“看上去”是随机排列的了。而这些牌地随机性在魔术结尾观众的巨大震惊中再一次得到了强调。

尽管休斯敦不能够透露魔术背后的秘密,但是他还是告诉了我们是什么驱使了他去设计了这样一个魔术:“我一直在琢磨顺序的问题,为什么人们会觉得有的排列顺序是重要的,而有的排列顺序就不重要呢?举个例子,一副搞混后的牌组已经是很无序的了,而人们关心的一副新买的牌组的顺序——他们觉得这个很重要。我觉得设计一个小把戏来看看一个看似不‘重要’的顺序实际上会有多‘重要’,这应该挺好玩的。”

我们已经了解了如何进行完美洗牌,但是实际上当我们在家里和朋友打牌,或者在赌场下注的时候,我们真正想要的是“不完美”——正如我们看到的,除了其中的“魔法”之外,简简单单的洗牌中还蕴含了大量的数学技巧,有机会我们再和大家更详细地说明。

本文经授权转载自微信公众号“中科院物理所”。原文链接:https://plus.maths.org/content/magic-shuffling

全部专栏