ข้อสอบ PAT3 ปี 63 : สุ่มหยิบธนบัตร
สำหรับบทความนี้ จะลองเขียนโปรแกรม simulate โจทย์เรื่องความน่าจะเป็น ของข้อสอบ PAT3 ปี 63 ว่าจะตรงกับการคำนวณหรือไม่ ก่อนอื่นมาดูโจทย์กันก่อน
มีธนบัตรใบละ
100 บาท จำนวน 2 ใบ
50 บาท จำนวน 2 ใบ
20 บาท จำนวน 2 ใบ
สุ่มหยิบธนบัตรขึ้นมา 2 ใบ เพียงหนึ่งครั้งเพื่อที่จะซื้อของราคา 120 บาท
จงหาความน่าจะเป็นที่หยิบเงินขึ้นมาไม่พอที่จะซื้อของได้
ข้อนี้มีวิธีคิดได้หลายวิธี จะขอยกตัวอย่าง 2 วิธี ดังนี้
วิธีที่ 1. แบบกระจายทุกกรณีที่เป็นไปได้
หยิบได้ :
- แบงค์หนึ่งร้อย ทั้งสองใบ
100,100
- แบงค์ร้อยใบแรก กระจายจับคู่กับ ห้าสิบ, ยี่สิบ
100,50 100,50 100,20 100,20
- แบงค์ร้อยใบสอง กระจายจับคู่กับ ห้าสิบ, ยี่สิบ
100,50 100,50 100,20 100,20
- แบงค์ห้าสิบ ทั้งสองใบ
50,50
- แบงค์ห้าสิบใบแรก กระจายจับคู่กับ ยี่สิบ
50,20 50,20
- แบงค์ห้าสิบใบสอง กระจายจับคู่กับ ยี่สิบ
50,20 50,20
- แบงค์ยี่สิบ ทั้งสองใบ
20,20
นับดูจะได้ วิธีทั้งหมด เท่ากับ 15 แบบ
ดังนั้น n(S) = 15
นับวิธีที่หยิบได้เงินไม่พอ(ไม่มีแบงค์หนึ่งร้อย) เท่ากับ 6 แบบ
ดังนั้น n(E) = 6
จะได้ ความน่าจะเป็น P(E) = n(E)/n(S) = 6/15 = 2/5 = 0.4 #
วิธีกระจายทุกแบบที่เป็นไปได้แบบนี้ ถ้าหากว่าจำนวนไม่เยอะมากก็ยังพอนับไหว แต่ถ้าจำนวนมากก็ต้องใช้การคำนวณเข้ามาช่วย
วิธีที่ 2. แบบใช้สูตรคำนวณ
แบงค์ทั้งหมด 6 ใบ เลือกมา 2 ใบ หรือ C(6,2) = 15
ดังนั้น n(S) = 15
หยิบได้เงินไม่ถึง 120 บาท คือ ต้องไม่ได้แบงค์หนึ่งร้อย ดังนั้นเลือกจากแบงค์ห้าสิบและยี่สิบ ทั้งหมด 4 ใบ เลือกมา 2 ใบ หรือ C(4,2) = 6
ดังนั้น n(E) = 6
จะได้ ความน่าจะเป็น P(E) = n(E)/n(S) = 6/15 = 2/5 = 0.4 #
ลองมาเขียนโปรแกรม simulate ดูบ้าง
จากโปรแกรมด้านบน จะใช้ module random ในการสุ่มค่า
หรือจะเขียนโปรแกรม โดยใช้ module itertools มาช่วยก็จะทำให้โปรแกรมดูสั้นลงอีก
จากผลการ run จะเห็นว่าทั้งสองโปรแกรมสามารถจำลองค่าความน่าจะเป็นออกมาได้ใกล้เคียงกับที่คำนวณไว้