Birthday Paradox ( парадокс วันเกิด ) เป็นปัญหา nổiดมากในส่วนของความน่าจะเป็น
ข้อความโจทย์ - มีหลายคนในงานปาร์ตี้วันเกิด บางคนมีวันเกิดตรงกัน (collision) เราต้องการหาจำนวนคนประมาณในงานปาร์ตี้วันเกิด โดยอิงจากความน่าจะเป็นที่มีวันเกิดตรงกัน
ในความน่าจะเป็น เรารู้ว่าความน่าจะเป็นของการได้หัวก้อยคือ 1/2 เหมือนกันถ้าเรามีเหรียญบางอย่าง ความน่าจะเป็นของการได้หัว 10 ครั้งคือ 1/100 หรือ 0.001
มาทำความเข้าใจแนวคิดกัน
โอกาสที่สองคนจะมีวันเกิดต่างกันคือ $$\frac{364}{365}$$ ซึ่งคือ $$\lgroup1-\frac{1}{365}\rgroup$$ ในปีที่ไม่ใช่ปีอธิกสุรทิน
ดังนั้น เราสามารถพูดได้ว่าคนแรกมีความน่าจะเป็นของวันเกิดเฉพาะคือ '1' และสำหรับคนอื่นๆ จะต่างกัน ซึ่งคือ
P(different) = $$1\times\lgroup1-\frac{1}{365}\rgroup\times\lgroup1-\frac{2}{365}\rgroup\times\lgroup1-\frac{3}{365}\rgroup\times\lgroup1-\frac{4}{365}\rgroup...$$
ดังนั้น
P(same) = 1 − P(different)
ตัวอย่าง จำนวนคนที่มีวันเกิดตรงกันสำหรับความน่าจะเป็น 0.70
N = √2 × 365 × log(1-1/p)
N = √2 × 365 × log(1-1/0.70) = 30
ดังนั้น จำนวนคนประมาณที่มีวันเกิดตรงกันคือ 30 คน
ตัวอย่าง
import math
def findPeople(p):
return math.ceil(math.sqrt(2*365*math.log(1/(1-p))))
print(findPeople(0.70))
ผลลัพธ์
การรันโค้ดจะได้ผลลัพธ์ดังนี้
30