Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 생일 역설

<시간/>

생일 역설은 확률 부분에서 아주 유명한 문제입니다. 이 문제의 문제 설명은 다음과 같이 명시됩니다.

생일 파티에는 여러 사람이 있고 일부는 같은 생일 충돌을 겪고 있습니다. 대략적인 번호를 찾아야 합니다. 생일이 같다는 이유로 생일 파티에 참석한 사람들의 수

앞서 나갈 확률이 1/2이라는 것을 알고 있는 확률은 동전이 몇 개 있는 것과 같으며 앞면이 10개 나올 확률은 1/100 또는 0.001입니다.

개념을 이해합시다.

두 사람의 생일이 다를 확률은,

364/365는 윤년이 아닌 해의 1-1/365입니다.

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

P(다름)=1×(1-1/365)× (1-2/365)× (1-3/365) × (1-4/365).......

따라서 P(동일)=1- P(다름)

예를 들어

확률이 0.70인 생일이 같은 사람의 수.

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

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

따라서 총 대략적인 번호. 생일이 같은 사람은 30명입니다.

#include<bits/stdc++.h>
using namespace std;
int findPeople(double p){
   return ceil(sqrt(2*365*log(1/(1-p))));
}
int main(){
   printf("%d",findPeople(0.70));
}

출력

30