概率论问题_生日问题

生日也会有问题,人生如此艰难。

问题描述: 在一个教室中最少应有多少学生才使得至少有两个学生的生日在同一天的概率不小于1/2?

直觉回答这应该是个三位数的答案,对吧!

然而答案是23!!!!

第一次遇到这个问题是高中看一个不知道什么知识点(反正和高考没关系),当时只是看懂了,却不知道有什么用。

比较好的实践方法就是像我的概率论习题课老师(如果没记错,是个女的吧)喊一堆人上去写自己的生日,直到有两个人的生日相同。大概当时是20几个吧,忘了。(也可能这事就是我瞎编的)

分析问题:366天这种情况不考虑,只考虑平年365天。求:至少有两个学生的生日在同一天的概率?也就是算1-P(大家生日都不相同)。
1个人的时候:可以选择:365/365
2个人的时候:可以选择:364/365
3个人的时候:可以选择:363/365


n个人的时候:可以选择:(365-n+1)/365
P(n人生日各不同)=365*364*363…*(365-n+1)/365^n
P(至少有两个学生的生日在同一天的概率)=1-P(n人生日各不同)

又到了撸代码的时候:

#include <iostream>
using namespace std;
int main()
{
    double P(int n);
    int n;
    int i;
    for(i = 1; i < 100; i += 3)
    {
        cout<<i<<"个人中至少有两个人生日相同的概率为:"<<1-P(i)<<endl; 
    }
    return 0;
}
double P(int n)
{
    double p = 1.0;
    int i;
    for(i = 1; i <= n; i++)
    {
        p *= (365-i+1)/365.0;
    }
    return p;   
}

结果:这里写图片描述

为了找到23,把for语句改一下就好了
这里写图片描述

又关注了一下99%在哪
这里写图片描述

大概57个人就能到了

认识那多人,现在就知道一个学妹生日比我早一天,哦,她还和我同一年。还有两位长春生日比我早一天。

相关:生日攻击 平方根攻击

随手百度:http://blog.csdn.net/px_farmer/article/details/52688806

百度百科:http://baike.baidu.com/link?url=mckUhyZa56BwvVvb2lP-UpCX6_DOLyE-tICCUjWN8NY5wIglTZ3lQ1fCU3VBXmEwq9mvTFOn7KwMkrbJ181FwIiF1GJy5BnZrBYkv04p9cYAiPfWJD4UzMRGFuVH2Ks9
简单地说:生日攻击对Hash函数提出了一个必要的安全条件,即消息摘要必须足够长。40比特长的消息摘要,大概用2^20(大约100百万)次随机Hash可至少以1/2的概率找到一个碰撞。推荐160比特长的消息摘要。

CSDN博客不能改名,要不我想改成 菜狗子
然后就是菜狗子的博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值