풀하우스
포커 게임으로 다시 돌아가 봅시다. 지난번에는 같은 숫자 카드가 최소 두 장일 확률을 계산했어요. 이번에는 풀하우스에 관심이 있습니다. 풀하우스는 서로 다른 무늬의 같은 숫자 카드 두 장과, 또 다른 같은 숫자 카드 세 장을 받는 경우를 말합니다(예: 하트 2와 스페이드 2, 그리고 클럽 J, 다이아몬드 J, 스페이드 J).
즉, 풀하우스는 어떤 값에서 정확히 세 장이 나왔다는 사건이, 다른 값에서 정확히 두 장이 나왔다는 사건을 조건으로 할 때의 확률입니다. 이전과 같은 코드를 사용하되, 성공 조건을 수정해 원하는 결과를 얻어 보세요. 이 연습 문제를 통해 카드 게임에서 조건부 확률을 추정하는 방법을 배우고, 시뮬레이션을 위한 추상적 문제를 구성하는 기초를 다질 수 있습니다.
이 연습은 강의의 일부입니다
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))