Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 생일 역설

<시간/>

생일 역설은 확률 부분에서 아주 유명한 문제입니다.

문제 설명 − 생일 파티에 여러 사람이 있고, 같은 생일 충돌이 있는 사람도 있습니다. 생일이 같다는 것을 기준으로 대략적인 생일파티 인원수를 구해야 합니다.

확률에서 앞서 나갈 확률은 1/2이며, 동전이 몇 개 있고 앞면이 10개 나올 확률은 1/100 또는 0.001인 것과 같습니다.

개념을 이해합시다.

두 사람의 생일이 다를 확률은 $$\frac{364}{365}$$이며, 윤년이 아닌 경우 $$\lgroup1-\frac{1}{365}\rgroup$$입니다.

따라서 특정 생일의 확률을 가진 첫 번째 사람은 '1'이고 다른 사람의 경우에는 다릅니다.

P(다름) =$$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(동일) =1 − P(다름)

예를 들어, 생일이 같은 사람의 수는 확률이 0.70입니다.

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

N =√2 × 365 × 로그(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