フルハウス
ポーカーの例に戻りましょう。前回は、少なくともペア(同じ数値のカードが2枚)を引く確率を計算しました。今回はフルハウスに注目します。フルハウスとは、同じ数値のカードが2枚と、別の同じ数値のカードが3枚揃うことです(例:ハートとスペードの2、クラブ・ダイヤ・スペードのジャック)。
つまりフルハウスは、「ある数値でちょうど3枚揃う」ことが、「別の数値でちょうど2枚揃う」ことに条件づけられた確率です。前と同じコードを使い、成功条件を変更して目的の出力を得てください。この演習では、カードゲームにおける条件付き確率の推定方法を学び、シミュレーションに向けて抽象的な問題設定の基礎を身につけます。
この演習はコースの一部です
Pythonで学ぶ統計シミュレーション
演習の手順
deck_of_cardsをシャッフルします。- 手札に含まれる各カードの出現回数を数えるため、
.get()を使った辞書を利用します。 - 手札がフルハウス(ある数値が2枚、別の数値が3枚)のとき、カウンタ
full_houseをインクリメントします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Shuffle deck & count card occurrences in the hand
n_sims, full_house, deck_of_cards = 50000, 0, deck.copy()
for i in range(n_sims):
____
hand, cards_in_hand = deck_of_cards[0:5], {}
for card in hand:
# Use .get() method to count occurrences of each card
cards_in_hand[card[1]] = cards_in_hand.____(card[1], 0) + 1
# Condition for getting full house
condition = (max(cards_in_hand.values()) ==3) & (min(cards_in_hand.values())==2)
if condition:
full_house ____
print("Probability of seeing a full house = {}".format(full_house/n_sims))