시작하기무료로 시작하기

풀하우스

포커 게임으로 다시 돌아가 봅시다. 지난번에는 같은 숫자 카드가 최소 두 장일 확률을 계산했어요. 이번에는 풀하우스에 관심이 있습니다. 풀하우스는 서로 다른 무늬의 같은 숫자 카드 두 장과, 또 다른 같은 숫자 카드 세 장을 받는 경우를 말합니다(예: 하트 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))
코드 편집 및 실행