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

更新於: 2021 年 2 月 5 日

641 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告

© . All rights reserved.