開始使用免費開始

十三遊戲

法國著名的組合學家 Pierre Raymond De Montmart 提出了一個簡單的遊戲,稱為「十三遊戲」。你有一副 13 張的牌,編號從 1 到 13。先將牌洗勻,然後一次抽一張。當牌面數字與抽出的順序相同時,就稱為一次「巧合」。例如,第 5 張你抽到 5,這就是巧合。若你能抽完整副牌而沒有出現任何巧合,就算贏。讓我們用模擬來估計在這個遊戲中獲勝的機率。

完成此練習後,你將更能把抽象問題轉換為用來估計機率的模擬框架。

本練習屬於課程

Python 的統計模擬

檢視課程

練習說明

  • 每次試玩時,從 deck 中「不放回」地抽出「全部」的牌,並指派給 draw
  • 檢查這次抽牌是否出現任何巧合;若有,將計數器 coincidences 加 1。
  • 以沒有任何巧合的遊戲次數所佔比例計算獲勝機率,並用 prob_of_winning 印出結果。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Pre-set constant variables
deck, sims, coincidences = np.arange(1, 14), 10000, 0

for _ in range(sims):
    # Draw all the cards without replacement to simulate one game
    draw = np.random.choice(____, size=____, replace=____)
    # Check if there are any coincidences
    coincidence = (draw == list(np.arange(1, 14))).any()
    if coincidence == ____: 
        coincidences += 1

# Calculate probability of winning
prob_of_winning = ____
print("Probability of winning = {}".format(____))
編輯並執行程式碼