ツー・オブ・ア・カインド
ここではシミュレーションを使って確率を推定してみます。友人の家でポーカーをすることになったとしましょう。このバリエーションでは、各プレイヤーに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))