始める無料で始める

ツー・オブ・ア・カインド

ここではシミュレーションを使って確率を推定してみます。友人の家でポーカーをすることになったとしましょう。このバリエーションでは、各プレイヤーに5枚のカードが配られ、手札の強い方が勝ちです。特定の手札が出る確率をシミュレーションで推定します。まずは、少なくとも「ツー・オブ・ア・カインド」(同じ数字でスートが違うカードが2枚、例:ハートの2、スペードの2、残り3枚は任意)の確率を見積もってみましょう。

この演習が終わるころには、カードゲームの確率をシミュレーションで計算する方法が分かります。

この演習はコースの一部です

Pythonで学ぶ統計シミュレーション

コースを見る

演習の手順

  • 手札を配る: for ループ内で deck_of_cards をシャッフルします。その後、先頭の5枚を hand として選びます。
  • 数値をカウント: get() メソッドを使って辞書 cards_in_hand を作成し、hand に含まれる各 numeric_value の出現回数を数えます。
  • ツー・オブ・ア・カインドか? cards_in_hand の最大値が 2 以上かを確認し、少なくともツー・オブ・ア・カインドかどうかを判定します。該当する場合は two_kind をインクリメントします。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Shuffle deck & count card occurrences in the hand
n_sims, two_kind = 10000, 0
for i in range(n_sims):
    ____
    hand, cards_in_hand = deck_of_cards[0:5], {}
    for [suite, numeric_value] in hand:
        # Count occurrences of each numeric value
        cards_in_hand[numeric_value] = cards_in_hand.____(numeric_value, 0) + 1
    
    # Condition for getting at least 2 of a kind
    if ____ >=2: 
        two_kind += 1

print("Probability of seeing at least two of a kind = {} ".format(two_kind/n_sims))
コードを編集して実行