시작하기무료로 시작하기

짝지은 주사위 시뮬레이션

수업의 예시와 비슷하게, 두 개의 봉투에서 각각 주사위 하나씩을 굴립니다. 각 봉투에는 치우친 주사위가 세 개씩 들어 있습니다.

bag1 = [[1, 2, 3, 6, 6, 6], [1, 2, 3, 4, 4, 6], [1, 2, 3, 3, 3, 5]]
bag2 = [[2, 2, 3, 4, 5, 6], [3, 3, 3, 4, 4, 5], [1, 1, 2, 4, 5, 5]]

차이점은 두 봉투의 주사위가 서로 짝지어져 있다는 점입니다. 즉, bag1에서 두 번째 주사위를 선택하면 bag2에서도 두 번째 주사위를 선택합니다. 각 시행에서:

  • 두 봉투에서 주사위 한 쌍을 무작위로 선택해 굴립니다.
  • dice1dice2의 눈의 합이 8이면 성공, 그렇지 않으면 실패입니다.

여러분의 과제는 roll_paired_biased_dice() 함수의 for-루프를 완성하고, 이 함수를 사용해 dice1dice2의 눈 조합별 성공 확률을 계산하는 것입니다.

다음 모듈이 미리 임포트되어 있습니다: random, numpynp, pandaspd, seabornsns, 그리고 matplotlib.pyplotplt.

이 연습은 강의의 일부입니다

Python으로 배우는 Monte Carlo 시뮬레이션

강의 보기

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

def roll_paired_biased_dice(n, seed=1231):
    random.seed(seed)
    results={}
    for i in range(n):
        bag_index = random.randint(0, 1)
        # Obtain the dice indices
        dice_index1 = ____
        dice_index2 = ____
        # Sample a pair of dice from bag1 and bag2
        point1 = ____
        point2 = ____
        key = "%s_%s" % (point1,point2)
        if point1 + point2 == 8: 
            if key not in results:
                results[key] = 1
            else:
                results[key] += 1
    return(pd.DataFrame.from_dict({'dice1_dice2':results.keys(),
		'probability_of_success':np.array(list(results.values()))*100.0/n}))
코드 편집 및 실행