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

Nghịch lý sinh nhật trong C ++

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. Câu lệnh vấn đề của vấn đề này được phát biểu là,

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

Trong xác suất mà 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,

Cơ hội để hai người có ngày sinh khác nhau là,

364/365 là 1-1 / 365 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 × (1-1 / 365) × (1-2 / 365) × (1-3 / 365) × (1-4 / 365) .......

Như vậy P (giống nhau) =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 gần đúng là không. của những người có cùng ngày sinh là 30 tuổi.

Ví dụ

#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));
}

Đầu ra

30