您的位置:首页 > 其它

生日不相同的概率

2017-03-13 20:58 260 查看
    假设我们班有50名同学,每个同学都报出自己的生日,
每个同学的生日都不相重的概率只有0.0296,如果有100个同学,不相重的概率为3.0725´10-7。相重复的概率如此之大与我们主观想象不同。编写程序,输入同学的人数n,计算出其生日不重复的概率。然后在用仿真的方法,
利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。

  

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct shengri
{
int mon;
int da;
}sr[100]; //结构体来存储生日
int main()
{
int n1,k,flag=0;
double cnt=0;
double ans=1,a=0.0;
cin>>n1;
for(int i=0;i<n1;i++)
{
ans=ans*((365.0-a)/365.0); //计算理论概率
a=a+1.0;
}
cout<<ans<<endl;
srand((unsigned)time(0));
for(int mi=0;mi<25000;mi++) //共模拟25000次
{
flag=0;
for(k=0;k<n1;k++)
{
sr[k].mon=rand()%12+1;
sr[k].da=rand()%31+1; //生成随机模拟生日
}
for(int l=0;l<k-1;l++)
{
for(int c=l+1;c<k;c++)
{
if(sr[l].mon!=sr[c].mon || sr[l].da!=sr[c].da)
{
flag++;
}
}
}
if(flag==((k*(k-1))/2))
{
cnt++;
}
}
 cnt=cnt/25000;
    cout<<cnt<<endl;
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: