要洗多少次牌才能把牌徹底洗開?

是否有演算法可以證明呢?


近日忽然收到不少贊同,非常感謝。

但回過頭在看自己一年前的回答,太顯稚嫩,很多地方透著股酸腐氣,實在讓人不舒服。所以在原來答案上做一定修改,希望能有更多的人能了解到這個美妙神奇的數學世界。

以下是修改後的回答:

-----------------------------

誰說懂數學的不懂撲克牌。

洗牌需要洗七次之說源於D Aldous, P Diaconis (1986) Shuffling cards and stopping times. [1] 這篇文章研究的是 Riffle Shuffle (鴿尾式洗牌法)(如Picture 1.)

文章得到的結論是一副52張的牌堆通過7次數學模擬的 Riffle Shuffle 後,就可以認為已經達到了數學意義上的隨機化。

洗牌問題是一個典型的數學問題,那麼討論數學問題的時候,我們第一步要做的就是定義。

為什麼要定義?要知道,數學的優勢就是把生活中習以平常的知識抽象為純粹理性的概念,然後以純粹理性的邏輯判斷一步一步地推導出邏輯自洽的結果。明確的定義決定著一個問題是否能很好地抽象為可操作的數學概念。所以經常有人說,定義好了問題,問題就解決了一半。

這裡就有一點小小的優越感,我們做數學的在一起討論的時候,都得先明確在討論什麼問題,絕不會因為問題定義的不清晰而出現雞同鴨講的情況。

回到洗牌問題,我們要做的把這個生活上看起來很容易理解的『需要洗多少次牌才能將一疊撲克牌洗勻?』轉化為數學上可以操作的準確定義。

大家也可以從以下的提出的一些問題看出來,我們為什麼要這麼慎重地去定義一個數學問題。

  • 『什麼是洗勻』:『洗勻』什麼意思呢?一個『012』這3張牌的牌堆,如果經過幾次洗牌後,達到了『210』這種狀態,大家會覺得沒有『洗勻』。而如果達到了『021』這種狀態,大家是不是會覺得稍微『洗勻』些了?可是『210』『021』之間有什麼區別?所以,『洗勻』不應該跟具體結果相關聯。一次實際操作的最終結果只是出現的一種可能性。
  • 『什麼洗牌方法』:這個也很重要。洗牌的方法千千萬,逮住一個就說所有洗牌都只需要花7次簡直就是耍流氓。研究的是那種洗牌方法,就需要明確確定
  • 『可以認為已經洗勻』:『洗勻』定義好之後,我們通過研究發現所有洗牌方法要完全達到『洗勻』狀態需要花非常長的時間,而實際上生活中是不需要這麼精確的『洗勻』的。所以我們也需要定義什麼時候『可以認為已經洗勻』。

讓我們再來看一個最簡單例子。

一堆只有2張牌(A、B)的牌堆,它僅有2種排列方式(AB、BA)。

這堆牌怎樣才是隨機了的呢?按照常識,這堆牌的隨機化就是指這2種排列方式都以相同的概率出現。

現在對這個牌堆,我們規定這樣一種洗牌方式:

  • 拋一枚硬幣,若硬幣字面朝上,則保持原狀態;
  • 若硬幣字面朝下,則調換兩張牌的位置。

那麼,我們馬上就可以知道不管初始狀態如何,只要按這一方式洗過一次牌後,就可以準確地預期它的2種排列方式(AB、BA)出現的概率都將是1/2。

也就是說,在這個模型里,只要洗1次牌,就將達到洗勻狀態。

現在我們可以來看看這個簡單的例子里是怎麼定義的:

  • 『什麼是洗勻』:只有兩張牌的牌堆,『洗勻』看起來十分好定義,按照上面的處理方式也特別容易理解。這樣我們就可以抽象出『洗勻』的概念,『洗勻』就是指經過若干次『洗牌操作』後每一種排列方式預期的出現概率相同。注意,這裡強調的是預期的出現概率,而不是某次洗牌的洗牌結果。也就是說,我們早在洗牌之前就可以算出按某種確定的洗牌操作經過若干次後每種排列方式出現的概率。我們只關心每種排列方式出現的概率相不相同,而不關心最終某一次洗牌結果是出現了那種排列方式。這樣子,即使最終洗牌結果是出現了『210』,還是『012』,我們都是不關心的,因為某一次特殊的洗牌結果是沒有意義的。我們會說,只要最終『012』『210』『021』等所有可能的排列方式出現的概率都相同,那我們就認為牌堆在那個時候已經達到了洗勻狀態。
  • 『什麼洗牌方法』:上述例子中的洗牌方法是個很好的定義,它的意義確定,結果可預測,隨機的概率確定,操作確定,不會引起任何的誤解。我們在之後處理洗牌問題時,也應該這樣嚴格確定洗牌的方式,將生活中概念可能會非常廣的『洗牌』界定為非常準確的『洗牌方法』。

  • 『可以認為已經洗勻』:這個例子牌數太少,可能看不出其必要性。對於52張牌,其排列方式有52!=8.07*10^{67}種,達到完全的每種排列方式出現的概率完全相同的完全『洗勻』狀態,需要經過非常長的時間。而這個『完全洗勻狀態』不論是在生活中,還是研究中,都是沒有必要的。所以我們還是需要定義什麼時候『可以認為已經洗勻』。

經過上面這麼多準備,我們終於可以給出明確的定義了:

一堆每張牌都互不一樣的牌堆,規定某一種具有隨機性的洗牌法。那麼在不考慮初始狀態的情況下,經過重複進行該洗牌法若干次後,牌堆的每種排列出現的概率都相同或接近相同。問:對某一種確定的『洗牌法』,『若干次』是多少次?

這裡稍微再解釋下上面定義中加黑的部分。

『每張牌都互不一樣』是為了規範我們所研究的問題。對有重複牌的牌堆,比如說同時洗兩幅牌,每一張牌都與另一張牌一樣。這樣的洗牌問題與無重複牌堆的洗牌問題是不一樣的,這方面的研究成果也有很多。

『不考慮初始狀態』是要將初始狀態的影響去除掉,一堆看起來非常無序的牌堆和一堆看起來非常有序的牌堆處理起來應該是一樣的。當然,從數學上來看,『看起來非常無序』和『看起來非常有序』本身就是沒有區別的。

『相同或接近相同』,其實這裡『接近相同』是什麼意思需要更嚴格一些的定義,但因為牽扯到概率分布的全變差距離等數學概念,這裡就不必傲了。

剩下的就是建立洗牌模型,然後分析模型,解決問題了。

為了處理這些問題,我們可以構建洗牌模型模擬生活中的洗牌,同時研究得到結論。但模型與真實生活中洗牌幾乎必然會有所區別,我們只能儘可能地提高建模水平,更加準確地模擬現實生活中的洗牌了。

目前已經處理解決的洗牌模型及結論如下:

//一些洗牌法沒有標準的翻譯,在此我也就不一一翻譯了。結論附在每一行的最後,指的是其達到洗勻所花的時間與牌數的階關係。通過把實際的數據n=52代入,可以看到收斂時間的大概量級。

  1. Top-to-Random Shuffle :抽出頂部的牌,隨機插入牌堆中任一位置。O(n log n)

  2. Random-Transposition :隨機抽取兩張牌,交換他們。O(n log n)
  3. Random-Adjacent-Transposition :隨機抽取兩張相鄰的牌,交換他們。O(n^3 log n)
  4. Riffle Shuffle (鴿尾式洗牌法): 將牌分成兩疊,交錯放下。(見Picture. 1。)O(log n)

  5. Overhand Shuffle (過手洗牌法) Hindu Shuffle (印度洗牌法):即不斷地從牌堆中抽出一疊,放置到整個牌堆上方。O(n^2 log n)(見Picture. 2, Picture. 3)//兩者只是手法不同,對牌的順序的影響是一樣的。
  6. Rudvalis Shuffle, Thorp Shuffle, L-reversal chain 等其他洗牌法,此處就不詳細說明了。

Overhand Shuffle (Picture. 2)

Hindu Shuffle (Picture. 3)

可以看到,我們的 Riffle Shuffle (鴿尾式洗牌法)是速度最快的。也正是從 Riffle Shuffle 這裡,我們得到了洗牌七次就能達到『可以認為已經洗勻』的狀態的結論。

在這裡暫時就只粗略介紹一下大家爭論最多的 Riffle Shuffle 的研究過程的前幾步。

Riffle Shuffle 的研究成果可見 [1]。數學上定義 Riffle Shuffle 如下:

  1. 按二項分布的概率將牌堆分成兩堆;
  2. 依次將兩堆牌放下,而每次放下哪一堆的牌的概率與當時該堆牌中剩餘的牌數成正比。

第一步模擬實際 Riffle Shuffle 過程中分成左右兩堆的動作。第二步模擬 Riffle Shuffle 放牌的動作。

是不是與生活中的 Riffle Shuffle (鴿尾式洗牌法)有一定的區別?

但這些區別是可以容忍的,因為我們必須給 Riffle Shuffle 這些操作的數學定義。例如生活中,可以簡單地說隨機把牌切成兩堆;但我們要研究的時候,就必須確定是以什麼概率來切的,每種切法的具體概率是多少。而放牌時,實際生活中是用手指自然控制,讓其依次落下,但在我們要實際處理時,就需要明確每次掉落的準確概率。

實際上,上述 Riffle Shuffle 的數學模型是一個非常好的模型,其各部分準確、自然,而且難得地跟實際生活經驗非常切合。

當然僅僅是建立這樣的模型,仍然不太好處理,所以我們換個思路,來處理 Riffle Shuffle 的逆過程。

//可以證明,隨機遊動逆過程的混合時間與原過程的混合時間相同,即它的逆向洗牌過程和其本身,達到洗勻狀態花的時間是一樣的。

定義 Riffle Shuffle 的逆過程(Inverse Riffle Shuffle)如下:

  1. 隨機給每張牌標上『0、1』記號;
  2. 將所有標記為『0』的牌放到標記為『1』的牌的上方,並保持同種標記的牌的排序不變。

//可以證明,該過程的確是原過程的逆過程。

Picture. 4 展示了連續兩次的 Inverse Riffle Shuffle.

對於 Inverse Riffle Shuffle ,數學上就容易處理得多了。

二項分布變成了布爾數標記,每一步都會發生概率變化的的隨機放下變成直接按順序排列。這些在數學上都是極大的簡化。

//大家可以稍微演算一下,為什麼這種洗牌方式是原來的 Riffle Shuffle 的逆過程,很有意思。

做了這麼多準備後,其實問題已經很簡單了。接著需要做的就是求其收斂時間的上下限,只需要一些基礎的隨機過程和混合時間的知識,就能夠完成相應的計算了,這裡也就不詳細展開了。

研究結果是 Riffle Shuffle 的混合時間的量級為O(log n)。同時對52張牌的牌堆,我們可以精確計算,得到結論如 Table. 1.

如上表所示,經過7次洗牌後,牌堆與洗勻之間的全變差距離已經達到0.334,可以認為已達到洗勻狀態。

最後,洗牌問題中還可能會出現 Cutoff 現象(截斷現象)。

Cutoff 現象如 Picture. 5 所示。在臨界點前,與均勻分布之間的距離(全變差距離)緩慢減小,即洗牌效果不明顯,牌堆與洗勻狀態相隔較遠;經過臨界點後與均勻分布之間的距離(全變差距離)迅速減小,能夠迅速達到均勻狀態。

Cutoff 現象在很多隨機過程中都會出現。而針對洗牌問題的 Cutoff 現象,近年來已經得到了一些結論。像上表 Table. 1 中所示的,其實 Riffle Shuffle 就已經出現了 cutoff 現象,在洗牌次數達到6-8次時,全變差距離迅速從0.924降到0.167,變化非常快。所以 cutoff 現象對洗多少次的問題也會很大的影響,發生 cutoff 現象的臨界時間在實際問題討論中可能也更有意義。

末了,閑扯兩句洗牌問題的數學野史。早在1986年就解決了 Riffle Shuffle 模型混合時間的的數學家之一 Persi Diaconis 本身就是一個職業魔術師。而他們的研究成果也通過 New York Times. In Shuffling Cards, 7 Is Winning Number [6] 難得地走出了數學的殿堂,走進了大眾的視野之中。

  1. David Aldous and Persi Diaconis, Shu?ing cards and stopping times, The American Mathematical Monthly 93 (1986), no. 5, 333–348. http://statistics.stanford.edu/~ckirby/techreports/NSF/EFS%20NSF%20231.pdf
  2. Picture. 1, 2, 3. Wikihow. 3 Ways to Shuffle a Deck of Playing Cards
  3. Picture. 4. 尹一通, 隨機演算法 (Fall 2011)/Card Shuffling
  4. Table. 1. 尹一通, 隨機演算法 (Fall 2011)/Card Shuffling
  5. Picture. 5. David Asher Levin, Yuval Peres, and Elizabeth Lee Wilmer, Markov chains and mixing times, Amer Mathematical Society, 2009. http://scf.berkeley.edu/~aldous/260-FMIE/Levin-Peres-Wilmer.pdf
  6. New York Times. Gina Kolata. January 09, 1990. http://www.nytimes.com/1990/01/09/science/in-shuffling-cards-7-is-winning-number.html


對第一名的答案做些補充吧。

看到「完美洗牌(一張隔一張)連續8次可以讓一副52張的撲克牌恢復原位這個結論感到很好奇,於是自己試了研究了一下。用群論的語言來說,完美洗牌是一個置換操作(置換),對於52張的撲克牌,這個操作寫成Permutation List是:

{1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52}

這個表中第1個元素是1,表示第1張牌經過1次「完美洗牌」操作後,新的位置是第1張;第2個元素為3,表示第2張牌經過一次"完美洗牌"操作後,新的位置是第3張(因為有一張插入到它之前了)。

根據這個表,我們可以把這個置換寫成輪換乘積的形式。輪換乘積為:

(2, 3, 5, 9, 17, 33, 14, 27) (4, 7, 13, 25, 49, 46, 40, 28) (6, 11, 21, 41, 30, 8, 15, 29) (10, 19, 37, 22, 43, 34, 16, 31) (12, 23, 45, 38, 24, 47, 42, 32) (20, 39, 26, 51, 50, 48, 44, 36) (18, 35)

可以看到這個置換操作是由6個長度為8的輪換以及1個長度為2的輪換生成的,因此,「完美洗牌」8次一定會使整副牌復原。

整個過程如下:

洗牌前:

?1?2?3?4?5?6?7?8?9?10?J?Q?K?1?2?3?4?5?6?7?8?9?10?J?Q?K?1?2?3?4?5?6?7?8?9?10?J?Q?K?1?2?3?4?5?6?7?8?9?10?J?Q?K

第1次:

?1?1?2?2?3?3?4?4?5?5?6?6?7?7?8?8?9?9?10?10?J?J?Q?Q?K?K?1?1?2?2?3?3?4?4?5?5?6?6?7?7?8?8?9?9?10?10?J?J?Q?Q?K?K

第2次:

?1?1?1?1?2?2?2?2?3?3?3?3?4?4?4?4?5?5?5?5?6?6?6?6?7?7?7?7?8?8?8?8?9?9?9?9?10?10?10?10?J?J?J?J?Q?Q?Q?Q?K?K?K?K

第3次:

?1?7?1?7?1?8?1?8?2?8?2?8?2?9?2?9?3?9?3?9?3?10?3?10?4?10?4?10?4?J?4?J?5?J?5?J?5?Q?5?Q?6?Q?6?Q?6?K?6?K?7?K?7?K

第4次:

?1?4?7?10?1?4?7?J?1?4?8?J?1?5?8?J?2?5?8?J?2?5?8?Q?2?5?9?Q?2?6?9?Q?3?6?9?Q?3?6?9?K?3?6?10?K?3?7?10?K?4?7?10?K

第5次:

?1?9?4?Q?7?2?10?6?1?9?4?Q?7?3?J?6?1?9?4?Q?8?3?J?6?1?9?5?K?8?3?J?6?2?10?5?K?8?3?J?7?2?10?5?K?8?4?Q?7?2?10?5?K

第6次:

?1?5?9?K?4?8?Q?3?7?J?2?6?10?2?6?10?1?5?9?K?4?8?Q?3?7?J?3?7?J?2?6?10?1?5?9?K?4?8?Q?4?8?Q?3?7?J?2?6?10?1?5?9?K

第7次:

?1?3?5?7?9?J?K?2?4?6?8?10?Q?1?3?5?7?9?J?K?2?4?6?8?10?Q?2?4?6?8?10?Q?1?3?5?7?9?J?K?2?4?6?8?10?Q?1?3?5?7?9?J?K

第8次(還原):

?1?2?3?4?5?6?7?8?9?10?J?Q?K?1?2?3?4?5?6?7?8?9?10?J?Q?K?1?2?3?4?5?6?7?8?9?10?J?Q?K?1?2?3?4?5?6?7?8?9?10?J?Q?K

讓我好奇的是,要還原一副52張的撲克牌,8次是一個相當少的次數。假如牌的數量不是52張,最少需要多少次完美洗牌才能將其還原呢?

假設牌的數量為2*m,那麼同樣地可以寫出對應完美洗牌操作的Permutation List, 然後分解成輪換的乘積。將整副牌復原所需要的次數應該是這些輪換的長度的最小公倍數。列一下m=26 (52張牌) 附近的結果:

48張牌:需要23次

50張牌:需要21次

52張牌:需要8次

54張牌:需要52次

56張牌:需要28次

下圖為牌的數量為從2到60的偶數時,還原整副牌所需要的最小洗牌次數:

實在不是很有規律...可以看出52張牌在其附近確實是需要洗牌次數最少的。同樣要還原整副牌所需要洗牌次數很少的還有16張、22張、32張的時候。

可見,「完美洗牌(一張隔一張)連續8次可以讓一副撲克牌恢復原位這個結論只對52張牌的時候才成立。

以上。


對第一名的結論點了 down。

玩過魔術的人都知道,完美洗牌(一張隔一張)連續8次可以讓一副52張的撲克牌恢復原位。倒推一下,可以很輕易的知道牌的順序,如果把牌用1-52標註的話,7次洗牌後奇數偶數牌分別升序排列在上下兩部分,再洗一次就能完美複位。

有視頻為證:

8 Perfect Faro Shuffles

http://www.youtube.com/watch?v=7lNk7bfkFq8

想要完全把牌洗開,比較方便的方法是自己引入隨機的因素,比如說切牌,比如說不完美的洗牌,以達到相對隨機的效果。

另外,lz的文章另有出處,最好註明出處,這是對原作者的表達敬意的方式。

要洗多少次牌才能把牌徹底洗開?

「本文版權屬於果殼網(guokr.com),轉載請註明出處。商業使用請聯繫果殼」

補充:

@Alone 的答案提到洗牌有很多種,不能一概而論。本答案僅僅討論完美洗牌一種洗牌方式,作為合格答案差的很遠,請見諒。


為 @Octolet補充個通項公式吧...

2k張排完美洗牌,恢復原樣需要的次數是ord_2(2k-1). ord為multiplicative order.

證明: 一次如 @Octolet 定義的完美洗牌會做出如下置換:

(0, 1, 2...., 2k-1) -&> (0, k, 1, k + 1, 2, .... k - 1, 2k - 1)

一次洗牌後, t的位置為 2*t mod (2k-1) (t&<2k-1. 而2k-1的位置永遠不變)

x次洗牌後, t的位置為 2^x * t mod (2k-1)

所以恢復原樣所需的最小次數即 2^xequiv 1 pmod{2k-1} 成立的最小x

也即x=ord_2(2k-1)

見數列百科. A002326 - OEIS


以上答案大多是錯誤的。

問題在於懂數學,但是不懂撲克牌。

一。概念錯誤,洗牌是總稱

果殼網即7次隨機的理論指的是鴿尾式洗牌。而一般中國人指的洗牌是指印度式洗牌(Hindu Shuffle),鴿尾式洗牌,以及過手洗牌,完美洗牌,各種花式洗牌,單手洗牌的總稱。不考慮假洗(每一種都有一種以上的假洗),這些統稱洗牌。每一種天差地別,不能一概而論。只能針對某種洗牌探討規律。完美洗牌和過手洗牌大多用於千數。

如果是打亂排序,一次有水平的洗牌足夠。比如一次印度洗牌,決不會出現可以統計或者可以查找的規律(用右手始終手握一疊原撲克底部的牌,不斷削薄)。上面所說的幾次打亂排序指的是鴿尾式洗牌或者切牌。切牌也分很多種。如果是只切一次的是滿足以上規律的。某些切牌(如sandwich cut)也是會徹底打亂排序,任何賭神已經做好牌的順序,都不可能再短時間內調整牌序。可以認為已經打亂排序。

三。即使是果殼所說鴿尾式洗牌,也不需要7次

如果普通人用鴿尾式洗牌,滿足果殼所說規律的,必須是每次cut出非常接近的牌數(比如左右端都是27張上下)且每次都儘力細緻地洗牌,雖然達不到完美洗牌,但是每次都差不多(比如是平均左側放下1張牌,右側放下1張牌的比例),比例接近的洗牌多次確實有規律可循但是如果你的目的是洗亂,很簡單,粗洗加細洗,三次足夠。比如一副新撲克,從上到下是1111222233334444-KKKK這樣的順序,第一次洗牌cut出三分之一,然後用三分之二的那疊牌先放手,並且保持較高的落牌速度,三分之一的牌緩緩落下,這樣達到的效果是為了造成多次切牌(cut)的效果,第二次洗牌儘力模仿完美洗牌(cut左右手分別27張,1比1洗牌),這樣的目的為了拆散111122223333等對子,第三次洗牌cut出三分之一,然後儘力模仿完美洗牌。

可以達到這類似印度式洗牌+鴿尾洗牌的效果,足夠亂,因為印度洗牌會無規律拆散123456789的順序,而接近完美洗牌的鴿尾洗牌會規律打亂1111222233334444的對子,一次印度一次鴿尾,非常方便快速。

最後說一句題外話,撲克牌的水挺深的。至少比麻將深得多,大家玩牌千萬別當真,娛樂娛樂就好。如果真上頭了賭注越來越大,隨便一個會二腳貓功夫的,都能在牌桌上玩死你。

這個東西很難表達清楚啊。總而言之,我的結論就是:果殼那個結論是完全錯誤的。每個人洗牌差很多,而且和水平、習慣、是否認真洗有關係。如果是我洗牌,三次鴿尾洗牌,足夠亂到文中7次洗牌後的效果。


看到是演算法誒,正好找到了當初學C++時候自己隨便寫寫的代碼,還測試過了。不害臊的擺出來。很短的。

#include&
#define N 108
using namespace std;
class cards{
private:
int a[N];//牌

public:
int value;//判斷真假
int sum;//洗牌次數
cards()
{
for(int i=0;i!=N;i++)
{
a[i]=(i+1);
}//分為N張牌,從1-N,分別代表一張
sum=0;//洗牌次數初始化
value=0;//真假值初始化
}

int exchange()//洗一次牌
{
int temp1[N/2],temp2[N/2];
for(int i=0;i!=N/2;i++)
{
temp1[i]=a[i];
temp2[i]=a[i+N/2];
}//分成兩堆
for(int i =0,l=0;i!=N/2;i++,l+=2)
{
a[l]=temp1[i];
a[l+1]=temp2[i];

}//交叉
sum++;//次數加一
return 0;

}
int test()//判斷是否回復到最初排列
{

for(int i=0;i!=N;i++ )
{
if(a[i]==i+1)value++;
}
if (value==N) return 1;//各個值均相等,則排列回復到最初
else {value=0; return 0;}//未回復到最初
}
void show()
{for(int i=0;i!=N;i++)
cout&<&

//當N 為52時(即取走大小王),則8次即可回復到最初位置;當N為54時,則需要52次完美洗牌才能回復到最初位置。

----------------------------------

以上版權保證哦,這麼差的代碼,抄也抄不來。不過,你複製要跟我留言哦。不要跟第一名的羅某一樣。不乖。


新牌的話實在要洗開就像麻將那樣癱在桌子上搓一遍,肯定是洗的很開了,雖然不太美觀但是很有效,屬於比較白丁的做法!


上面的演算法都很對,我只說實際操作最可行的。

Step1 把所有牌平鋪像洗麻將一樣胡亂攪三次

Step2 收回牌進行兩次鴿尾式洗牌

Step3 進行三次印度洗牌法

Done.

這是在撲克比賽中,以及現金局中比較通行的洗牌方式,速度很快(完成全部動作不到10秒鐘)且能將牌很大程度「洗勻」。


如果沒有記錯的話,7(或者是8)次洗牌,如果每次都是一張隔一張的。那麼就恢復原裝了。


很多人可以完成這個效果,包括一些愛好者。

我就借題這麼一說。

謝提醒,是8次。


推薦閱讀:

有孩子了離婚好嗎?
從法律上來講,怎樣的婚內出軌才違法,怎樣的婚內出軌才不違法?
據說現在北京離婚率已經超過 50% 了,是真的嗎?北京離婚率到底有多高?
如何評價網上播出的女子組合SNH48成員也是擔任正副隊長的戴萌和莫寒兩人的首次正式對談?
攝影新手對紀實攝影有很大的興趣。但我還不知道買哪款機子(最好尼康或是佳能)和什麼鏡頭?

TAG:生活 | 數學 | 概率 | 隨機過程 | 馬爾科夫過程 |