เกมสิบสาม
Pierre Raymond De Montmart นักคณิตศาสตร์ชาวฝรั่งเศสผู้มีชื่อเสียงด้านคณิตศาสตร์เชิงการจัดได้เสนอเกมง่าย ๆ ที่เรียกว่า เกมสิบสาม โดยใช้ไพ่ 13 ใบ ซึ่งมีหมายเลข 1 ถึง 13 กำกับอยู่ จากนั้นสับไพ่แล้วจั่วออกมาทีละใบ "ความบังเอิญ" เกิดขึ้นเมื่อหมายเลขบนไพ่ตรงกับลำดับที่จั่ว เช่น หากไพ่ใบที่ 5 ที่จั่วได้มีหมายเลข 5 พอดี ถือว่าเกิดความบังเอิญ ผู้เล่นจะชนะเกมหากจั่วไพ่ครบทุกใบโดยไม่มีความบังเอิญเกิดขึ้นเลย มาคำนวณความน่าจะเป็นของการชนะเกมนี้โดยใช้การจำลองสถานการณ์กัน
แบบฝึกหัดนี้จะช่วยเสริมทักษะในการแปลงปัญหาเชิงนามธรรมให้อยู่ในกรอบของการจำลองสถานการณ์เพื่อประมาณค่าความน่าจะเป็นได้อย่างคล่องแคล่วยิ่งขึ้น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจำลองทางสถิติด้วย Python
คำแนะนำการฝึกหัด
- ในแต่ละรอบการจั่ว ให้จั่วไพ่ ทุกใบ จาก
deckโดยไม่ คืนใบที่จั่วแล้ว แล้วกำหนดผลลัพธ์ให้กับdraw - ตรวจสอบว่ามีความบังเอิญเกิดขึ้นในการจั่วหรือไม่ ถ้ามี ให้เพิ่มตัวนับ
coincidencesขึ้น 1 - คำนวณความน่าจะเป็นของการชนะในรูปแบบสัดส่วนของเกมที่ไม่มีความบังเอิญเลย แล้วใช้
prob_of_winningเพื่อแสดงผลลัพธ์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Pre-set constant variables
deck, sims, coincidences = np.arange(1, 14), 10000, 0
for _ in range(sims):
# Draw all the cards without replacement to simulate one game
draw = np.random.choice(____, size=____, replace=____)
# Check if there are any coincidences
coincidence = (draw == list(np.arange(1, 14))).any()
if coincidence == ____:
coincidences += 1
# Calculate probability of winning
prob_of_winning = ____
print("Probability of winning = {}".format(____))