Computer >> Máy Tính >  >> Lập trình >> Python

Nghịch lý sinh nhật bằng Python

Nghịch lý ngày sinh là một bài toán rất nổi tiếng trong phần xác suất.

Tuyên bố sự cố - Có một số người trong một bữa tiệc sinh nhật, một số người đang có sự va chạm trong sinh nhật giống nhau. Chúng tôi cần tìm số người gần đúng trong một bữa tiệc sinh nhật trên cơ sở có cùng ngày sinh.

Theo xác suất, chúng ta biết rằng cơ hội đi trước là 1/2, giống như khi chúng ta có một số đồng xu, cơ hội nhận được 10 đầu là 1/100 hoặc 0,001.

Hãy để chúng tôi hiểu khái niệm này.

Cơ hội để hai người có ngày sinh khác nhau là $$ \ frac {364} {365} $$ là $$ \ lgroup1- \ frac {1} {365} \ rgroup $$ trong một năm không nhuận.

Do đó, chúng ta có thể nói rằng người đầu tiên có xác suất sinh nhật cụ thể là "1" và đối với những người khác, nó sẽ khác,

P (khác nhau) =$$ 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 ... $$

Vì vậy,

P (same) =1 - P (khác nhau)

Ví dụ:số người có cùng ngày sinh với xác suất là 0,70.

N =√2 × 365 × log (1-1 / p)

N =√2 × 365 × log (1-1 / 0,70) =30

Do đó, tổng số gần đúng là không. của những người có cùng ngày sinh là 30 tuổi.

Ví dụ

import math
def findPeople(p):
   return math.ceil(math.sqrt(2*365*math.log(1/(1-p))))
print(findPeople(0.70))

Đầu ra

Chạy đoạn mã trên sẽ tạo ra kết quả là,

30