เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การจำลองการทอยลูกเต๋าคู่

คล้ายกับตัวอย่างในบทเรียน คุณจะทอยลูกเต๋าสองลูกจากถุงสองใบ โดยแต่ละใบบรรจุลูกเต๋าที่มีน้ำหนักเอียง 3 ลูก

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 ด้วยเสมอ ในแต่ละรอบทดลอง:

  • สุ่มเลือกลูกเต๋าหนึ่งคู่จากถุงทั้งสองแล้วทอย
  • ถือว่าสำเร็จเมื่อแต้มของ dice1 และ dice2 รวมกันได้ 8 มิฉะนั้นถือว่าล้มเหลว

ให้เติมโค้ดใน for-loop ของฟังก์ชัน roll_paired_biased_dice() และนำฟังก์ชันนี้ไปคำนวณความน่าจะเป็นของความสำเร็จสำหรับทุกชุดค่าคะแนนที่เป็นไปได้ของ dice1 และ dice2

ไลบรารีต่อไปนี้ถูก import ไว้ให้แล้ว: random, numpy เป็น np, pandas เป็น pd, seaborn เป็น sns และ matplotlib.pyplot เป็น plt

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Monte Carlo Simulations ใน Python

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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}))
แก้ไขและรันโค้ด