狂賭之淵中的吉爾布雷斯洗牌法 (Gilbreath's Shuffle)

前言

最近在看狂賭之淵,其中第二季第四集中提到「吉爾布雷斯洗牌法」,因為覺得蠻有趣的因此特別寫這篇文章紀錄。

吉爾布雷斯洗牌法

以下我們用動漫中的例子。

這副牌由 $0 \sim 3$ 組成,一共 $40$ 張,牌的初始順序為 $0, 1, 2, 3, 0, 1, 2, 3, \dots, 0, 1, 2, 3$。洗牌的過程一共有三個步驟:

  1. 進行切牌,切牌的位置與次數並不重要。
  2. 隨機取 $X = 1 \sim 40$,並將前 $X$ 張牌的順序反過來分成一堆,剩下的 $40 - X$ 分成另外一堆。
  3. 將這兩堆牌進行交疊洗牌 (不是完美的交疊洗牌也沒關係)。

這樣洗牌的結果會是每 $4$ 張牌都會包含 $0 \sim 3$ 各一張。

原理

聽起來非常的神奇,為什麼會有這個現象呢?我們對洗牌的過程進行分析。

首先,切牌後牌的順序會變成以下四種情況之一:

a. $0, 1, 2, 3, \dots, 0, 1, 2, 3$
b. $3, 0, 1, 2, \dots, 3, 0, 1, 2$
c. $2, 3, 0, 1, \dots, 2, 3, 0, 1$
d. $1, 2, 3, 0, \dots, 1, 2, 3, 0$

這四種情況都維持「每 $4$ 張牌都會包含 $0 \sim 3$ 各一張」的這個性質。因此不失一般性我們可以假設切牌次數為 $0$。

步驟 $2$ 和 $3$ 我們一起看。將 $X$ 張牌順序反過來放一堆,因此這 $X$ 張牌的頭是原本的尾,並與另外一堆進行交疊洗牌。因為交疊洗牌每次都是取兩堆的頭,而其中一堆的頭是原牌序的尾,因此等價於「在初始排序中,每次從牌頭或牌尾取一張牌並按照取走的順序排好,直到取完」。又因為初始的排序其實可以看成是一個循環 (以 a. 來說最後面的 $3$ 接到最前面的 $0$),因此在原牌序中不論是取頭或取尾,取走的牌都會對應到循環中一段連續的區間。因此不管怎麼取,連續的 $4$ 張牌都一定會包含 $0 \sim 3$ 各一張。

綜上所述,吉爾布雷斯洗牌法能夠成立的先決條件是牌的初始順序。在動漫中,每次發牌都是使用新的一副牌,因此初始順序是固定的。

應用

有兩間工廠 A 和 B 生產同一件產品,而生產又分為四個步驟。某天兩間工廠打算合作,A 工廠按照 $1, 2, 3, 4$ 的順序進行,B 工廠反過來按照 $4, 3, 2, 1$ 的順序進行。按照上述的原理每四個步驟必定包含 $1 \sim 4$ 各一個,符合經濟效益。

References


狂賭之淵中的吉爾布雷斯洗牌法 (Gilbreath's Shuffle)
https://fffelix-huang.github.io/posts/gilbreath-shuffle/
Author
老鼠
Posted on
August 28, 2023
Licensed under