Bắt đầu ngayBắt đầu miễn phí

Mô phỏng cặp xúc xắc

Tương tự ví dụ trong bài học, bạn sẽ tung hai viên xúc xắc từ hai túi, và mỗi túi chứa ba viên xúc xắc bị lệch.

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]]

Điểm khác biệt là các viên xúc xắc ở hai túi được ghép cặp: nếu bạn chọn viên thứ hai trong bag1, bạn cũng sẽ chọn viên thứ hai trong bag2. Ở mỗi lượt thử:

  • Bạn chọn ngẫu nhiên một cặp xúc xắc từ hai túi và tung chúng
  • Thành công nếu điểm trên dice1dice2 cộng lại bằng tám; nếu không thì thất bại

Nhiệm vụ của bạn là hoàn thiện vòng lặp for trong hàm roll_paired_biased_dice() và dùng hàm này để tính xác suất thành công cho từng tổ hợp điểm khác nhau trên dice1dice2.

Các thư viện sau đã được nhập sẵn cho bạn: random, numpynp, pandaspd, seabornsnsmatplotlib.pyplotplt.

Bài tập này là một phần của khóa học

Mô phỏng Monte Carlo với Python

Xem khóa học

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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}))
Chỉnh sửa và Chạy Mã