生日问题

生日问题是一个机率论中的问题，它的叙述是：「需要多少人聚在一起，才能让其中至少有两人同一天生日的机率超过一半？」
答案令人意外，只需要23人。这个问题有时被称为「生日悖论」，不过这其实并不是真正的悖论，只是因为结果违反了一般人的直觉。大多数人会认为23人中两人同生日的机率应该远小于50%。它衍生出的数学理论被用于设计一种名为「生日攻击」的密码破解方法。

**解释**
生日问题可理解成盲射打靶问题。首先计算：23人皆不同生日的概率是多少？可想像一间有23人进入的房间，这23人依次进入，每个进入的人的生日都与房里其他人的生日不同的概率依次是1、、、、等。先入房的人的生日皆不同的概率很高，前五个是1××××=97.3%；而最后入房的几人就完全不同，他们入房且找不到同生日者的概率是、、。这种概率可看成对靶的盲射：靶有365格，其中17个左右黑格，其余白格。假设每枪必中靶并且分布符合几何概型的话，连射12枪左右任何一发都没有击中黑格的概率（投射于房间里的人生日皆不同）十分微小。
理解生日问题的关键在于考虑上述“依次入房”模型中最后几个入房的人“全都没碰到同生日的人”概率多少。
简言之，大多数人之所以会认为23人中两人同生日的概率应该远远小于50%，是因为将问题理解为“其他22人与你同生日的概率”，而非问题真谛“23人中两两之间存在生日相同”。如果有考虑这点，直觉上会将原来的概率乘以23（注意：此算法并不正确），则会意识到概率很大。

**概率估计**
假设有n个人在房内，如果要计算两人同生日的机率，在不考虑特殊因素如闰年、双胞胎的前提下，假设一年365日出生概率平均分布（现实的出生机率不是平均分布）。
计算概率的方法是，首先找出p（n）表示n人中，每人生日都不同的概率。假如n > 365，根据鸽巢原理其概率为0，假设n ≤ 365，则概率为

该图片显示特定人数对应的2个人生日一样的概率
因为第二人不能跟第一人同生日（概率是364/365），第三人不能跟前两人同生日（概率是363/365），依此类推。用阶乘可写成如下形式

p(n）表示n个人中至少两人同生日的概率

n≤365，根据鸽巢原理，n大于365时概率为1。
n是23时概率约0.507。其他人数的概率用上面算法可得出：
比较p (n) = 任意两人同生日的概率；q (n) =和某人同生日的概率
注意所有人都是随机选出：作为对比，q(n)表示房间中有n+1人，当中与特定人（比如你）同生日的概率：
 
当n = 22时概率只有大约0.059，约高于十七分之一。如果n人中有50％概率存在某人跟你同生日，n至少要达到253。注意这数字大大高于365/2 = 182.5；究其原因是因为房间内可能有些人同生日。

**数学论证（非数字方法）**
保罗·哈莫斯在自传中认为生日问题只用计算数值来解释是种悲哀，所以给出了一种概念数学方法的解释（尽管这方法有一定的误差）：乘积
等于1－p（n），因此关注第一个n，欲使乘积小于1/2。由平均数不等式可知：

再用已知的1到n－1所有整数和等于n（n－1）/2，然后用不等式1－x −x，可得到：


如果仅当

最后一条表达式的值会小于0.5。其中loge表示自然对数，略小于506，如果取n2－n=506就得到n＝23。
在推导中，哈莫斯写道：
然而哈莫斯的推论只显示至少超过23人就能保证平等机会下的生日匹配。因为不知道给出的不等式有多强（严格、清晰），因此无法借此计算过程确定n＝22是否能让机率过半；相反，现在任何人都可用Microsoft Excel等个人电脑程式在几分钟内把整幅机率分布图画出来，对问题答案很快就有通盘掌握，一目了然。

**泛化和逼近**
用公式（红线）与真实概率（黑线）的比较
生日问题可以推广一下：假设有n人，每人都随机从N个特定的数中选一个数出来（N可能是365或其他正整数）。
p（n）表示有两个人选择了同样的数字，这概率多大?
下面的逼近公式可以回答这个问题
。

**泛化**
下面泛化生日问题：给定从符合离散均匀分布的区间1,d随机取出n个整数，至少2个数字相同的概率p（n;d）有多大?
类似的结果可以根据上面的推导得出。

　　　　　　　　　　　　　
　　　　　　　　　　


**反算问题**
反算问题可能是：
对于确定的概率p…
…找出最大的n（p）满足所有的概率p（n）都小于给出的p，或者
…找出最小的n（p）满足所有的概率p（n）都大于指定的p。
这问题有如下逼近公式：
。

**举例**
注意：某些值有色，说明逼近不总是正确。

**经验性测试**
生日问题可以用计算机代码经验性模拟
days := 365;
numPeople := 1;
prob := 0.0;
while prob 
生日问题也可以用Microsoft Excel Spreadsheet模拟
人数
人数对应的生日相同的概率
1 
   1 
  =1-PERMUT(365,A1)/POWER(365,A1)
2  
  =A1+1
  =1-PERMUT(365,A2)/POWER(365,A2)
3  
   =A2+1
   =1-PERMUT(365,A3)/POWER(365,A3)
当行数达到23（即人数），可看到概率结果开始过半。

**应用**
生日问题普遍的应用于检测哈希函数：N-位长度的哈希表可能发生碰撞测试次数不是2N次而是只有2N/2次，这结论用在破解密码学散列函数的生日攻击中。
生日问题隐含的理论已经在Schnabel 1938名字叫做捉放法（capture-recapture）的统计试验得到应用，来估计湖的鱼数。

**不平衡概率**
就像上面提到的，现实世界人口的生日并非平均分布，这种非均衡生日概率问题也已解决。date=2016年9月

**近似匹配**
此问题的另外一个泛化是求在n人中有两人的生日同在k日历天内的概率。假设有m个同等可能的生日。

能找到两个人生日相差k天或更少的概率高于50%所需要的人数：
只须随机抽取7人，找到两人生日相差一周内的概率就会过半。

**其它相关生日错觉机率问题**
星期二男孩问题：一个两孩家庭有一个男孩，他是星期二出生的，那么另一个孩子也是男孩的机率是多少？答：13/27

**参考**
 Zoe Emily Schnabel: "The estimation of the total fish population of a lake"（某湖中鱼类总量估计），美国数学月刊45（1938年）, 348-352页- M. Klamkin，D. Newman: "Extensions of the birthday surprise"（生日惊喜的扩充）, Journal of Combinatorial Theory 3（1967年）,279-282页。- D. Blom: "a birthday problem"生日问题，美国数学月刊80（1973年）,1141-1142页。这一论文证明了当生日按照平均分布，两个生日相同的概率最小。

**相关条目**
 概率论- 生日- 生日攻击- 哈希函数

**参考文献**

**外部链接**
 http://www.efgh.com/math/birthday.htm date=20210309210135 - http://www.teamten.com/lawrence/puzzles/birthday_paradox.html date=20210125055411 - http://science.howstuffworks.com/question261.htm date=20080522125530 - http://mathworld.wolfram.com/BirthdayProblem.html date=20210308175928 - http://www.atriumtech.com/pongskorn/birthdayparadox/birthdayparadox.htm date=20160304123412