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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP