ทอยลูกเต๋า
มาสร้าง generator แบบอนันต์กัน! โจทย์คือให้นิยาม generator ชื่อ simulate_dice_throws() ซึ่งจำลองผลการทอยลูกเต๋า 6 หน้า แล้วเก็บผลลัพธ์ไว้ในรูปแบบ dictionary ชื่อ out โดยแต่ละ key คือผลที่เป็นไปได้ (1, 2, 3, 4, 5, 6) และแต่ละ value คือ list ที่มี 2 ค่า ได้แก่ จำนวนครั้งที่ผลนั้นเกิดขึ้น และสัดส่วนของจำนวนครั้งนั้นต่อจำนวนการทอยทั้งหมด total ตัวอย่างเช่น (เมื่อ total = 4):
{
1: [2, 0.5],
2: [1, 0.25],
3: [1, 0.25],
4: [0, 0.0],
5: [0, 0.0],
6: [0, 0.0]
}
เคล็ดลับ: ใช้ฟังก์ชัน randint() จากโมดูล random (นำเข้าไว้แล้ว) เพื่อสุ่มจำนวนเต็มในช่วงที่กำหนด (เช่น randint(1, 2) จะได้ผลลัพธ์เป็น 1 หรือ 2)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
ฝึกทำโจทย์สัมภาษณ์งานเขียนโค้ดด้วย Python
คำแนะนำการฝึกหัด
- จำลองการทอยครั้งเดียวเพื่อสุ่มตัวเลขใหม่
- อัปเดตจำนวนครั้งและสัดส่วนของผลลัพธ์นั้น
- Yield dictionary ที่อัปเดตแล้ว
- สร้าง generator และจำลองการทอย 1000 ครั้ง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def simulate_dice_throws():
total, out = 0, dict([(i, [0, 0]) for i in range(1, 7)])
while True:
# Simulate a single toss to get a new number
num = ____
total += 1
# Update the number and the ratio of realizations
out[num][0] = ____
for j in range(1, 7):
out[j][1] = round(____/____, 2)
# Yield the updated dictionary
____
# Create the generator and simulate 1000 tosses
dice_simulator = ____
for i in range(1, 1001):
print(str(i) + ': ' + str(____(____)))