当前位置: 首页 > news >正文

第一部分:一般性理論(注定的概率論)第三章 計數I:紙牌

第3章是「離散型機率的計數核心」——透過紙牌遊戲(撲克牌、單人紙牌、橋牌),將階乘、二項式係數等計數工具與機率計算深度結合。紙牌問題是機率論中最直觀的离散場景,不僅能鞏固計數基礎,還能培養「避免重複計數」「不遺漏特殊情形」的核心能力。本章會逐節拆解計算細節,對每種紙牌型、每個計數步驟都講透邏輯,並點出常見誤區。

## 3.1 階乘和二項式係數:

計數的「基礎工具」 在計算紙牌機率前,必須先掌握兩個核心工具:階乘(處理「有序選擇」)和二項式係數(處理「無序選擇」)。這兩個工具是所有离散計數問題的基石,其組合意義比公式本身更重要。

### 3.1.1 階乘函數:「排序」的計數方法

#### 定義與公式

若 \( n \) 是正整數,階乘函數定義為: \[ n! = n \times (n-1) \times (n-2) \times \cdots \times 3 \times 2 \times 1 \] 特別規定 \( 0! = 1 \)(後面解釋合理性)。

#### 組合意義:

「排序n個物體的方法數」 階乘的本質是「考慮次序的排列數」。例如,3個人(Alice、Bob、Charlie)排序的方法數: 1. 第一個位置:3種選擇(Alice、Bob、Charlie)。

2. 第二個位置:剩下2人,2種選擇。

3. 第三個位置:剩下1人,1種選擇。 總方法數 = 3×2×1 = 3! = 6,與列舉結果({A,B,C}、{A,C,B}、{B,A,C}、{B,C,A}、{C,A,B}、{C,B,A})完全一致。

#### 關鍵細節:

為什麼0! = 1? 很多人會疑惑「0個物體排序的方法數為何是1」,這需要從「空積」和「實際意義」兩方面理解:

1. 代數角度:階乘遞推關係是 \( n! = n \times (n-1)! \),若要滿足此遞推,當 \( n=1 \) 時,1! = 1×0! ⇒ 0! = 1。

2. 組合角度:「什麼都不做」的方法只有1種(比如從0人中選0人排序,只有1種方式),這與集合論中「空集的子集只有自身」一致。

#### 階乘的增長速度:

為何如此驚人? 階乘是「超指數增長」,比平方、指數函數增長快得多:

10! = 3628800(約363萬)。

20! ≈ 2.43×10¹⁸(超過2萬億億)。

52! ≈ 8.07×10⁶⁷(一副牌的排序方法數,這個數字比宇宙中原子總數還多)。

用具體例子感受:若全世界70億人每秒洗一次52張牌,要洗完所有排序,需要約 \( 8×10⁶⁷ ÷ (7×10⁹ × 3.15×10⁷) ≈ 3.7×10⁵⁰ \) 年——遠超宇宙年齡(約138億年)。

#### 推廣:

從n個物體選k個排序(排列數) 若不排序所有n個物體,而是選k個物體並考慮次序,方法數稱為「排列數」,記作 \( P(n,k) \): \[ P(n,k) = \frac{n!}{(n-k)!} \] 推导邏輯: - 第一個位置:n種選擇。

第二個位置:n-1種選擇。

...

第k個位置:n - k + 1種選擇。 乘積為 \( n×(n-1)×\cdots×(n-k+1) \),分子分母同乘 \( (n-k)! \),即得 \( \frac{n!}{(n-k)!} \)。

例:從70名學生中選30人排序(考慮選取次序),方法數 = \( \frac{70!}{40!} ≈ 1.46×10⁵² \)。

### 3.1.2 二項式係數:「無序選擇」的計數方法 階乘用於「考慮次序」,但紙牌問題中常需「不考慮次序」(如一手5張牌的先後拿到順序無關),這時需要二項式係數。

#### 定義與公式 從n個物體中不考慮次序選k個,方法數稱為「二項式係數」,記作 \( \binom{n}{k} \)(讀作「n選k」): \[ \binom{n}{k} = \frac{n!}{k! \times (n-k)!} \] 其中 \( 0 ≤ k ≤ n \);若 \( k > n \) 或 \( k < 0 \),則 \( \binom{n}{k} = 0 \)(不可能從n個物體選k個)。

#### 為何除以k!?:

消除「不必要的次序」 以「從52張牌選5張」為例:

1. 考慮次序時,方法數是 \( P(52,5) = \frac{52!}{47!} = 52×51×50×49×48 = 311875200 \)。

2. 但5張牌的次序無關(如{5♣,6♦,7♥,7♠,J♣}與{J♣,5♣,7♠,6♦,7♥}是同一手牌),而5張牌的排序有5! = 120種,因此需除以5! 消除次序影響。

3. 不考慮次序的方法數 = \( \frac{52!}{5!×47!} = 2598960 \),這正是二項式係數 \( \binom{52}{5} \) 的值。

#### 具體例子驗證:

從5人中選3人 5人(A、B、C、D、E)中選3人,不考慮次序:

1. 用二項式係數計算:\( \binom{5}{3} = \frac{5!}{3!×2!} = 10 \)。

2. 列舉所有可能:{A,B,C}、{A,B,D}、{A,B,E}、{A,C,D}、{A,C,E}、{A,D,E}、{B,C,D}、{B,C,E}、{B,D,E}、{C,D,E},共10種,與計算結果一致。

#### 核心性質:

二項式係數的對稱性 對任意n、k,有 \( \binom{n}{k} = \binom{n}{n-k} \),這是計數中非常實用的性質,用「故事證明法」最易理解:

故事1:從n人中選k人去參加派對,方法數是 \( \binom{n}{k} \)。

故事2:從n人中選n-k人不去參加派對,方法數是 \( \binom{n}{n-k} \)。 - 兩個故事描述的是同一回事(選k人去 = 選n-k人不去),因此方法數相等。 例:\( \binom{52}{5} = \binom{52}{47} \)(選5張牌 = 選47張牌留下),計算時選小的k(如5)更簡單,避免計算大階乘。

### 3.1.3 總結:

排列vs組合的核心區分 階乘和二項式係數的關鍵差異在於「是否考慮次序」,這是計數中最易混淆的點,用表格清晰對比: | 場景 | 工具 | 公式 | 核心特徵 | 例子 | |---------------------|---------------------|-----------------------|-------------------------|-------------------------------| | 考慮次序(排列) | 排列數 \( P(n,k) \) | \( \frac{n!}{(n-k)!} \) | 選取順序不同即不同結果 | 從52張牌選5張排序,方法數 \( P(52,5) \) | | 不考慮次序(組合) | 二項式係數 \( \binom{n}{k} \) | \( \frac{n!}{k!(n-k)!} \) | 選取順序不同仍同一結果 | 從52張牌選5張手牌,方法數 \( \binom{52}{5} \) |

記憶口訣:「有序用排列(階乘除(n-k)!),無序用組合(再除k!)」。

## 3.2 撲克牌:

計數與機率的「綜合練習」 撲克牌是檢驗計數能力的最佳場景——52張牌,5張手牌,多種牌型,每種牌型的計數都需謹防「重複計數」和「遺漏情形」。

首先明確撲克牌基本規則:

牌組:52張,4種花色(黑桃♠、紅桃♥、方塊♦、梅花♣),每種花色13種點數(2~10、J、Q、K、A)。

手牌:5張,牌型從小到大為:最小牌型(無對子、無順子、無同花)、對子、兩對、三條、順子、同花、葫蘆、鐵支、同花順。

機率計算:某牌型的機率 = 該牌型的數量 / 所有可能手牌的數量(即 \( \binom{52}{5} = 2598960 \))。

### 3.2.1 規則補充:

牌型的關鍵定義 避免後續計算混淆,先明確幾個易模糊的牌型定義:

順子:5張點數連續(如A-2-3-4-5、10-J-Q-K-A),A可作1或14,但不循環(如Q-K-A-2-3不為順子)。

同花:5張花色相同,不考慮點數(如5張黑桃)。

同花順:既是順子又是同花(如10♠-J♠-Q♠-K♠-A♠)。 - 葫蘆:3張點數相同 + 2張點數相同(如3張5 + 2張J)。

鐵支:4張點數相同(如4張7 + 1張任意牌)。 ### 3.2.2 最小牌型:無對子、無順子、無同花 最小牌型指「5張牌中無對子、無順子、無同花」,計數步驟需用「容斥原理」:先算「所有點數不同」的情況,再減去「順子」和「同花」,最後加回「同花順」(因順子和同花都減去了同花順,重複減了一次)。

#### 步驟1:

計算「所有點數不同」的手牌數 - 選5種不同點數:從13種點數選5種,方法數 \( \binom{13}{5} \)。 - 每種點數選1種花色:4種花色可選,5種點數共 \( 4^5 \) 種。

總數 = \( \binom{13}{5} × 4^5 = 1287 × 1024 = 1317888 \)。

#### 步驟2:

減去「順子」的數量 - 順子的點數序列:共10種(A-2-3-4-5、2-3-4-5-6、...、10-J-Q-K-A)。 - 每種序列的花色:5張牌各4種花色,共 \( 4^5 = 1024 \) 種。

順子總數 = 10 × 1024 = 10240。

#### 步驟3:

減去「同花」的數量 - 選1種花色:4種選擇,方法數 \( \binom{4}{1} \)。

該花色中選5張牌:從13張選5張,方法數 \( \binom{13}{5} \)。

同花總數 = \( \binom{4}{1} × \binom{13}{5} = 4 × 1287 = 5148 \)。

#### 步驟4:

加回「同花順」的數量 - 同花順是「順子且同花」,之前減順子和同花時各減了一次,需補加一次。 - 同花順的點數序列:10種(與順子相同)。

每種序列的花色:4種選擇(每種花色1套)。

同花順總數 = 10 × 4 = 40。

#### 步驟5:

最小牌型的數量與機率

最小牌型數量 = 點數不同數 - 順子數 - 同花數 + 同花順數 = 1317888 - 10240 - 5148 + 40 = 1302540。

機率 = 1302540 / 2598960 ≈ 0.501(約50.1%),這與實際玩牌體驗一致——一半左右的手牌是最小牌型。

#### 常見誤區:

忘記加回同花順 若直接用「點數不同數 - 順子數 - 同花數」,會少算同花順的數量(因同花順既屬順子又屬同花,被重複減去),導致結果偏小,這是容斥原理的典型應用,必須記住「減重複的部分要補回」。

### 3.2.3 對子:

恰有一對相同點數,其餘三張點數不同 對子是「有一對,無兩對、三條、鐵支」的牌型,計數核心是「明確『恰有一對』的邊界」,避免與兩對、葫蘆混淆。

#### 步驟1:

選對子的點數 從13種點數選1種作為對子,方法數 \( \binom{13}{1} = 13 \)。

#### 步驟2:

選對子的花色 該點數有4張牌,選2種花色構成對子,方法數 \( \binom{4}{2} = 6 \)(如從4張K中選2張,有6種組合)。

#### 步驟3:

選其餘三張的點數 其餘三張點數需不同,且不同於對子的點數:從剩下12種點數選3種,方法數 \( \binom{12}{3} = 220 \)。

#### 步驟4:

選其餘三張的花色 每種點數有4種花色,3張牌共 \( 4^3 = 64 \) 種選擇。

#### 步驟5:

對子的總數與機率

總數 = \( \binom{13}{1} × \binom{4}{2} × \binom{12}{3} × 4^3 = 13 × 6 × 220 × 64 = 1098240 \)。

機率 = 1098240 / 2598960 ≈ 0.4226(約42.26%),這是撲克牌中最常見的牌型之一。

#### 常見錯誤分析:

考慮次序導致重複 錯誤方法:「第一張牌52種選擇,第二張牌3種(與第一張同點數),第三張48種(不同點數),第四張44種,第五張40種,總數 = 52×3×48×44×40 = 13178880,機率 = 13178880 / 2598960 ≈ 5.07」——明顯大於1,錯因是「考慮了手牌的次序」:

5張牌的次序有5! = 120種,而對子的兩張牌次序無關(如先選5♣再選5♥,與先選5♥再選5♣是同一對子),因此需除以5! 消除次序,正確總數 = 13178880 / 120 = 1098240,與之前結果一致。

### 3.2.4 兩對:

恰有兩個不同的對子,第五張點數不同 兩對是「兩個對子 + 一張單牌」,計數關鍵是「選兩個不同的對子點數時不重複」。

#### 步驟1:

選兩個對子的點數 從13種點數選2種(如K和J),方法數 \( \binom{13}{2} = 78 \)(注意:不是 \( \binom{13}{1} × \binom{12}{1} = 156 \),因「對K+對J」與「對J+對K」是同一手牌,需消除次序)。

#### 步驟2:

選每個對子的花色 每個對子選2種花色,兩個對子共 \( \binom{4}{2} × \binom{4}{2} = 6 × 6 = 36 \) 種。

#### 步驟3:

選第五張單牌的點數 第五張點數需不同於兩個對子的點數:從剩下11種點數選1種,方法數 \( \binom{11}{1} = 11 \)。

#### 步驟4:

選第五張單牌的花色 4種花色可選,方法數 \( \binom{4}{1} = 4 \)。

#### 步驟5:

兩對的總數與機率 - 總數 = \( \binom{13}{2} × \binom{4}{2} × \binom{4}{2} × \binom{11}{1} × \binom{4}{1} = 78 × 36 × 11 × 4 = 123552 \)。

機率 = 123552 / 2598960 ≈ 0.0475(約4.75%),比對子少得多,符合牌型大小邏輯。

### 3.2.5 三條:

恰有三張相同點數,其餘兩張點數不同且不構成對子 三條是「三張同點數 + 兩張不同點數」,需排除「三條+對子=葫蘆」的情況。

#### 步驟1:

選三條的點數 從13種點數選1種,方法數 \( \binom{13}{1} = 13 \)。

#### 步驟2:

選三條的花色 該點數4張牌中選3種花色,方法數 \( \binom{4}{3} = 4 \)。

#### 步驟3:

選其餘兩張的點數 兩張點數需不同,且不同於三條的點數:從剩下12種點數選2種,方法數 \( \binom{12}{2} = 66 \)。

#### 步驟4:

選其餘兩張的花色 每張牌4種花色,共 \( 4 × 4 = 16 \) 種選擇。

#### 步驟5:

三條的總數與機率

總數 = \( \binom{13}{1} × \binom{4}{3} × \binom{12}{2} × 4^2 = 13 × 4 × 66 × 16 = 54912 \)。 - 機率 = 54912 / 2598960 ≈ 0.0211(約2.11%),比兩對稀有。

### 3.2.6 順子、同花和同花順:

連續點數與同花色的組合 這三種牌型有重疊(同花順既是順子又是同花),需用容斥原理區分,之前計算最小牌型時已涉及部分步驟,這裡詳細展開:

#### 1. 順子(含同花順)

點數序列:10種(A-2-3-4-5到10-J-Q-K-A)。 - 每種序列的花色:5張牌各4種花色,共 \( 4^5 = 1024 \) 種。

總數 = 10 × 1024 = 10240。

機率 = 10240 / 2598960 ≈ 0.00394(約0.394%)。

#### 2. 同花(含同花順)

花色:4種選擇,方法數 \( \binom{4}{1} = 4 \)。

該花色選5張牌:從13張選5張,方法數 \( \binom{13}{5} = 1287 \)。

總數 = 4 × 1287 = 5148。

機率 = 5148 / 2598960 ≈ 0.00196(約0.196%),比順子稀有,符合牌型大小(同花 > 順子)。

#### 3. 同花順

點數序列:10種。

花色:4種選擇。

總數 = 10 × 4 = 40。

機率 = 40 / 2598960 ≈ 0.0000154(約0.00154%),極其稀有,是除皇家同花順(同花順的特殊情況,10-J-Q-K-A)外最大的牌型。

#### 關鍵區分:

純順子與純同花

純順子(非同花順):10240 - 40 = 10200,機率 ≈ 0.392%。

純同花(非同花順):5148 - 40 = 5108,機率 ≈ 0.196%。 這解釋了為何同花比順子大——純同花的數量更少,機率更低。

### 3.2.7 葫蘆和鐵支:

高級牌型的計數 這兩種是極稀有的高級牌型,計數邏輯相對直接,但需注意「點數的區分」。

#### 1. 葫蘆:

三張同點數 + 兩張同點數(不同於三張的點數)

選三張的點數:\( \binom{13}{1} = 13 \)。

選三張的花色:\( \binom{4}{3} = 4 \)。

選兩張的點數:從剩下12種點數選1種,\( \binom{12}{1} = 12 \)。

選兩張的花色:\( \binom{4}{2} = 6 \)。

總數 = 13 × 4 × 12 × 6 = 3744。

機率 = 3744 / 2598960 ≈ 0.00144(約0.144%),比同花稀有。

#### 2. 鐵支:

四張同點數 + 一張任意點數 - 選四張的點數:\( \binom{13}{1} = 13 \)。

選四張的花色:只有1種(4張全選),\( \binom{4}{4} = 1 \)。

選第五張的點數:從剩下12種點數選1種,\( \binom{12}{1} = 12 \)。

選第五張的花色:\( \binom{4}{1} = 4 \)。 - 總數 = 13 × 1 × 12 × 4 = 624。 - 機率 = 624 / 2598960 ≈ 0.00024(約0.024%),極其稀有,僅次於同花順。

### 3.2.8 撲克牌型練習I:

至少有兩張點數相同的機率

練習目的:綜合運用之前的牌型計數,驗證「互補機率」的實用性。

#### 問題:

5張手牌中至少有兩張點數相同的機率是多少?

#### 解法1:

直接計算(列舉所有有重複點數的牌型) 有重複點數的牌型包括:對子、兩對、三條、葫蘆、鐵支,其數量分別為:

對子:1098240

兩對:123552

三條:54912

葫蘆:3744

鐵支:624

總數 = 1098240 + 123552 + 54912 + 3744 + 624 = 1281072

機率 = 1281072 / 2598960 ≈ 0.4929(約49.29%)。

#### 解法2:

互補機率(計算「所有點數不同」的機率,再用1減去) - 所有點數不同的數量:1317888(3.2.2節步驟1)。

機率 = 1 - 1317888 / 2598960 ≈ 1 - 0.5071 = 0.4929(約49.29%)。

兩種方法結果一致,驗證了正確性,且解法2更簡單——避免列舉多種牌型,這再次體現「互補機率」的威力。

### 3.2.9 撲克牌型練習II:

已知部分手牌的概率計算

練習目的:處理「條件計數」,即已知部分手牌時,計算剩餘手牌構成目標牌型的概率。

#### 問題:

已知手牌前兩張是A♠和8♦,補3張牌後,恰有一個對子(既不是兩個A也不是兩個8)的概率是多少?

#### 分析:

剩餘牌組:52 - 2 = 50張,排除A(剩3張)和8(剩3張),剩50 - 6 = 44張非A非8的牌。

目標:補3張後,恰有一個對子,且對子不是A或8(即對子是2~7、9~K中的某種點數)。

#### 步驟1:

計算「補3張牌」的總方法數 從50張中選3張,方法數 \( \binom{50}{3} = \frac{50×49×48}{3!} = 19600 \)。

#### 步驟2:

計算「恰有一個對子(非A非8)」的方法數 - 選對子的點數:從11種非A非8的點數(2~7、9~K)選1種,\( \binom{11}{1} = 11 \)。

選對子的花色:該點數4張牌選2張,\( \binom{4}{2} = 6 \)。

選第三張牌:點數不同於A、8和對子的點數,共52 - 12 = 40張(12張是A、8和對子的點數),方法數 \( \binom{40}{1} = 40 \)。

總數 = 11 × 6 × 40 = 2640。

#### 步驟3:

計算概率 概率 = 2640 / 19600 = 33 / 245 ≈ 0.1347(約13.47%)。

#### 驗證:

用有序計數確認 - 有序補牌:50×49×48 = 117600種。

有序目標數:對子的位置有3種(第3&4張、第3&5張、第4&5張),每種位置的方法數 = 44×3×40 = 5280,總有序目標數 = 3×5280 = 15840。

概率 = 15840 / 117600 = 33 / 245 ≈ 0.1347,與無序計數一致,驗證正確。

## 3.3 單人紙牌:

計數與機率的「動態場景」 單人紙牌(如克朗代克、Aces Up、空當接龍)的核心是「初始布局的計數」和「贏牌概率的估算」,由於遊戲規則複雜(涉及牌的翻開、移動規則),很難用精確計數求贏牌概率,通常用模擬法估算。

### 3.3.1 克朗代克紙牌(Klondike)

#### 初始布局計數 - 牌組:52張,分成7組,第1組1張,第2組2張,...,第7組7張,每組頂牌翻開(共28張),剩24張作為備用牌。 - 初始布局的不同情況:理論上有52! 種(所有牌的排列),但考慮「花色無區別」「對稱布局」等等价類,實際不同布局數更少。

#### 贏牌概率估算

電腦模擬結果:超過80%的布局有贏的可能,但實際玩家贏率約30%~40%(因玩家策略影響)。

不可玩布局:約0.25%的布局無任何有效移動(如所有翻開的牌都是K,且無空組可放),這類布局必輸。

### 3.3.2 Aces Up紙牌

#### 規則簡介

初始布局:4張牌面朝上,剩餘48張牌依次翻開,每次翻開的牌可與4張中的某張比較,若花色相同且點數更小,則移除小牌;最終剩下4張A即獲勝。

#### 贏牌概率

因規則簡單,模擬贏率約70%~80%,是單人紙牌中相對容易贏的遊戲。

### 3.3.3 《空當接龍》(FreeCell)

#### 特點:

幾乎所有布局可贏

初始布局:52張牌分成8組,前4組7張,後4組6張,有4個空檔可暫存牌,4個基牌位置可放A並向上堆疊同花色牌。

贏率:官方Windows版本的32000種布局中,僅1種(#11982)被證明不可贏,贏率幾乎100%,這也是其受歡迎的原因。

## 3.4 橋牌:

團隊紙牌的「計數核心」 橋牌是4人團隊遊戲(東、南、西、北),核心計數問題包括「牌局個數」和「將牌分配概率」,這兩個問題都需用階乘和二項式係數解決。

### 3.4.1 井字遊戲(插曲:簡單策略遊戲的計數)

原書用井字遊戲(Tic-Tac-Toe)引入策略遊戲的計數,雖與橋牌無直接關聯,但能體現「計數與策略的結合」:

總布局數:9! = 362880,但考慮對稱(旋轉、翻轉),不同布局僅138種。

贏策略:完美對弈下,先手最多平局,後手無法贏,這說明計數可幫助分析策略極限。

### 3.4.2 橋牌牌局的個數

橋牌中,52張牌平均分給4個玩家(每人13張),計算不同牌局的數量:

分牌步驟:

1. 給東家13張:\( \binom{52}{13} \)。

2. 給南家13張:從剩39張選13,\( \binom{39}{13} \)。

3. 給西家13張:從剩26張選13,\( \binom{26}{13} \)。

4. 北家:剩13張,\( \binom{13}{13} = 1 \)。

總牌局數 = \( \binom{52}{13} × \binom{39}{13} × \binom{26}{13} = \frac{52!}{13!×39!} × \frac{39!}{13!×26!} × \frac{26!}{13!×13!} = \frac{52!}{(13!)^4} ≈ 5.36×10^{28} \),數量極其龐大。

若不區分玩家(如東家和西家互換視為同一牌局),則除以4!,牌局數 ≈ 5.36×10^{28} / 24 ≈ 2.23×10^{27}。

### 3.4.3 將牌的分配

橋牌中,某一花色被指定為「將牌」,計算某玩家拿到k張將牌的概率: - 將牌總數:13張(某一花色)。

某玩家拿到k張將牌的方法數:\( \binom{13}{k} × \binom{39}{13 - k} \)(k張將牌從13張選,13 - k張非將牌從39張選)。

總分牌方法數:\( \binom{52}{13} \)。 - 概率 = \( \frac{\binom{13}{k} × \binom{39}{13 - k}}{\binom{52}{13}} \)。

#### 例子:南家拿到6張將牌的概率

計算:\( \frac{\binom{13}{6} × \binom{39}{7}}{\binom{52}{13}} = \frac{1716 × 15380937}{635013559600} ≈ 0.0415 \)(約4.15%)。

意義:將牌分配影響遊戲策略,概率計算可幫助玩家判斷對手的將牌數量。

## 3.5 附錄:

計算機率的代碼——用程式驗證計數結果 原書提供了Mathematica代碼,用於模擬紙牌機率,這裡解釋核心代碼的邏輯,幫助讀者理解「如何用程式驗證理論計數」。

### 3.5.1 將牌分配的代碼

#### 代碼核心功能

模擬橋牌分牌,統計某玩家拿到不同數量將牌的次數,計算概率並與理論值對比。

#### 關鍵程式段解釋

```mathematica bridgetrump[num_] := Module[{}, (* num: 模擬次數 *) trumpcount = Table[0, {14}]; (* 記錄拿到0~13張將牌的次數 *) For[n = 1, n <= num, n++, (* 生成將牌:1~13為將牌,14~52為非將牌 *) deck = RandomSample[1~52]; (* 南家的牌:前13張 *) south = Take[deck, 13]; (* 統計南家的將牌數量 *) trumps = Count[south, x_ /; x <= 13]; trumpcount[[trumps + 1]] = trumpcount[[trumps + 1]] + 1; ]; (* 計算概率並輸出 *) prob = Table[trumpcount[[k]] / num, {k, 1, 14}]; Print["理論概率(k=0~13):", Table[Binomial[13, k] * Binomial[39, 13 - k] / Binomial[52, 13], {k, 0, 13}]]; Print["模擬概率(k=0~13):", prob]; (* 繪圖對比 *) ListPlot[{Table[Binomial[13, k] * Binomial[39, 13 - k] / Binomial[52, 13], {k, 0, 13}], prob}, AxesLabel -> {"將牌數k", "概率"}]; ] ``` #### 程式邏輯 1. 生成隨機牌組:`RandomSample[1~52]` 模擬洗牌,1~13代表將牌。 2. 提取南家牌:`Take[deck, 13]` 取前13張作為南家手牌。 3. 統計將牌數:`Count[south, x_ /; x <= 13]` 計算南家的將牌數。 4. 對比理論與模擬:輸出並繪圖對比,驗證理論概率的正確性。 ### 3.5.2 撲克牌型的代碼 #### 代碼核心功能 模擬隨機發5張手牌,判斷牌型(對子、兩對、...、同花順),統計各牌型的次數和概率。 #### 關鍵程式段:牌型判斷 ```mathematica pokerhand[num_] := Module[{}, (* 初始化計數器:0=最小牌型,1=對子,2=兩對,3=三條,4=順子,5=同花,6=葫蘆,7=鐵支,8=同花順 *) handcount = Table[0, {9}]; deck = Flatten[Table[{i, j}, {i, 1, 4}, {j, 1, 13}]]; (* 4種花色(1~4),13種點數(1~13) *) For[n = 1, n <= num, n++, (* 發5張牌 *) hand = RandomSample[deck, 5]; (* 提取點數和花色 *) ranks = Map[Last, hand]; (* 點數:1~13 *) suits = Map[First, hand]; (* 花色:1~4 *) (* 統計點數出現次數:count[[r]]=點數r出現的次數 *) count = Table[Count[ranks, r], {r, 1, 13}]; (* 判斷同花:所有花色相同 *) flush = If[Length[Union[suits]] == 1, True, False]; (* 判斷順子:點數排序後連續,或A-2-3-4-5(點數1,2,3,4,5) *) sortedranks = Sort[ranks]; straight = If[sortedranks == {1, 2, 3, 4, 5}, True, If[Max[sortedranks] - Min[sortedranks] == 4 && Length[Union[ranks]] == 5, True, False]]; (* 判斷牌型 *) If[straight && flush, handcount[[9]] += 1; Continue[]]; (* 同花順 *) If[Max[count] == 4, handcount[[8]] += 1; Continue[]]; (* 鐵支 *) If[Max[count] == 3 && Min[count] == 2, handcount[[7]] += 1; Continue[]]; (* 葫蘆 *) If[flush, handcount[[6]] += 1; Continue[]]; (* 同花 *) If[straight, handcount[[5]] += 1; Continue[]]; (* 順子 *) If[Max[count] == 3, handcount[[4]] += 1; Continue[]]; (* 三條 *) If[Length[Select[count, # == 2 &]] == 2, handcount[[3]] += 1; Continue[]]; (* 兩對 *) If[Max[count] == 2, handcount[[2]] += 1; Continue[]]; (* 對子 *) handcount[[1]] += 1; (* 最小牌型 *) ]; (* 輸出概率 *) prob = handcount / num; Print["各牌型概率:", prob]; ] ```

#### 程式邏輯

1. 生成牌組:用`{花色, 點數}`表示每張牌,如`{1,5}`代表花色1、點數5。

2. 提取特徵:從手牌中提取點數和花色,統計每個點數的出現次數。

3. 逐級判斷牌型:從最大牌型(同花順)到最小牌型(無對子),避免誤判(如葫蘆需同時有3張和2張同點數)。

4. 統計概率:大量模擬後,概率與理論值一致,驗證理論計數的正確性。

## 3.6 總結:

第3章的核心邏輯 第3章圍繞「計數工具在紙牌機率中的應用」展開,核心是「明確計數對象」「避免重複與遺漏」,關鍵總結如下:

1. **計數基礎**:

階乘用於「有序選擇」(如排列),二項式係數用於「無序選擇」(如組合),兩者的區分是避免錯誤的關鍵。

2. **紙牌計數原則**:

從「點數選擇」到「花色選擇」,分步拆解(如對子:選點數→選花色→選其餘點數→選其餘花色)。

用「互補機率」「容斥原理」簡化計算(如至少有兩張相同點數 = 1 - 所有點數不同)。 - 高級牌型需明確邊界(如葫蘆≠三條+對子的隨機組合,需點數不同)。

3. **模擬驗證**:

複雜場景(如單人紙牌、橋牌將牌分配)需用程式模擬,驗證理論計數的正確性,同時培養編程能力。 這一章的內容不僅能用於紙牌問題,還能推廣到所有离散計數場景(如抽獎、選取樣本),是後續學習離散型隨機變量的基礎。

## 3.7 習題精選(附詳解思路)

### 習題3.7.1

計算5張手牌中恰有一個對子且對子是A的概率。

#### 解思路

1. 總手牌數:\( \binom{52}{5} = 2598960 \)。

2. 恰有一個對子且是A的數量:

選A的花色:\( \binom{4}{2} = 6 \)。 - 選其餘3張的點數:從12種非A點數選3種,\( \binom{12}{3} = 220 \)。 - 選其餘3張的花色:\( 4^3 = 64 \)。 - 總數 = 6 × 220 × 64 = 84480。

3. 概率 = 84480 / 2598960 ≈ 0.0325(約3.25%)。

### 習題3.7.2

橋牌中,南家拿到至少10張將牌的概率是多少?

#### 解思路

1. 至少10張將牌 = 10張、11張、12張、13張將牌。

2. 各情況的方法數:

10張:\( \binom{13}{10} × \binom{39}{3} = 286 × 9139 = 2613754 \)。

11張:\( \binom{13}{11} × \binom{39}{2} = 78 × 741 = 57798 \)。

12張:\( \binom{13}{12} × \binom{39}{1} = 13 × 39 = 507 \)。

13張:\( \binom{13}{13} × \binom{39}{0} = 1 × 1 = 1 \)。

3. 總方法數 = 2613754 + 57798 + 507 + 1 = 2672060。

4. 概率 = 2672060 / \( \binom{52}{13} \) ≈ 2672060 / 635013559600 ≈ 0.00000421(約0.000421%),極其稀有。 

http://www.dtcms.com/a/607402.html

相关文章:

  • 崇明建设小学网站包头市建设局网站
  • 手机网站做多宽的图片2023年房地产市场分析
  • 【SSM|第一篇】MyBatisPlus
  • 点评网站建设网站制作企业对比
  • 课程注册 网站开发西部数码网站管理控制面板
  • 【Dokcer】Dockerfile指令讲解
  • 西安做网站那家好怎么做电商赚钱
  • 做网站被捉wordpress 文章表
  • GPT-5.1已上线!亲测国内可用,保姆级使用教程
  • OpenAI GPT-5.1 系列发布:对话体验优化解析
  • 微网站app制作网站开发 视频播放器
  • 集团门户网站建设不足遇到灾难网站变灰怎么做
  • 一站式网站建设行业室内设计联盟邀请码免费
  • 养殖企业网站模板如何接推广的单子
  • 打造开放大众AI平台:基于d2550/d525主板的轻量化组网与设计实践(AI帮助设计的AI平台构架)
  • 零基础学JAVA--Day31(Collection类+List类)
  • 电子商务模拟实训报告企业网站建设wordpress耗时
  • sglang结构分析
  • 找网络公司做网站要注意这4个细节公司企业文化墙设计方案
  • discuz修改网站标题网页ui设计教程
  • 珠海网站建设珠海易推网wordpress 自动缩略图
  • 电子商务公司企业简介国外注册网站做百度seo
  • 网页制作网站制作步骤wordpress 简单 免费主题下载
  • wordpress建站欣赏设计官网和推广的公司
  • 网站建设类型有哪些用一个口罩做一把枪
  • 《道德经》第五十五章
  • 佛山市企业网站建设平台自己有网站怎么做点卡?
  • C语言编译程序是什么软件 | 了解常用C语言编译工具及其功能
  • 算法练习-成功之后不许掉队
  • 连云港做网站哪里好什么叫社交电商平台