Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วันเกิด Paradox ใน Python


วันเกิดที่ผิดธรรมดาเป็นปัญหาที่มีชื่อเสียงมากในส่วนของความน่าจะเป็น

คำชี้แจงปัญหา − มีคนหลายคนที่งานวันเกิด บางคนมีวันเกิดที่เหมือนกัน เราต้องหาจำนวนคนโดยประมาณในงานวันเกิดโดยพิจารณาจากวันเกิดวันเดียวกัน

ในความน่าจะเป็น เรารู้ว่าโอกาสที่จะได้นำหน้าคือ 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(แตกต่าง)

ตัวอย่างเช่น จำนวนผู้ที่มีวันเกิดวันเดียวกันซึ่งความน่าจะเป็นคือ 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