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.