算法导论 5.4-1 - newdye的专栏 - 博客频道 - CSDN.NET
http://yuanhsh.iteye.com/blog/2195667
Read full article from 算法导论 5.4-1 - newdye的专栏 - 博客频道 - CSDN.NET
1 问题
一个房间里必须要有多少人,才能让某人和你生日相同的概率至少为1/2?必须要有多少人,才能让至少两个人为7月4日的概率大于1/2?
2 分析与解答
P{n个人中有人与你生日相同} = 1-P{n个人中没有人与你生日相同} = 1-(364/365)n >=1/2
所以(364/365)n <= 1/2
n >= -1/log2 (364/365)
n >= -lg2/lg(364/365)
n >= 253
所以房间里必须有254人。
Xij = Iij{i与j生日都为7月4日}
E(Xij ) = P{i与j生日都是7月4日} = 1/3652
E(X) = ∑i=1n-1∑j=i+1n(1/3652 ) = n(n-1)/3652 >= 1/2
所以,n约为258
所以(364/365)n <= 1/2
n >= -1/log2 (364/365)
n >= -lg2/lg(364/365)
n >= 253
所以房间里必须有254人。
Xij = Iij{i与j生日都为7月4日}
E(Xij ) = P{i与j生日都是7月4日} = 1/3652
E(X) = ∑i=1n-1∑j=i+1n(1/3652 ) = n(n-1)/3652 >= 1/2
所以,n约为258
一个房间里有50个人,那么至少有两个人生日相同的概率是多少?(忽略闰年的事实,也就是一年365天)
计算某些事情的概率很多时候都可以转换成先计算其相对面。在这个例子里,我们可以计算所有人生日都互不相同的概率,也就是:365/365 * 364/365 * 363/365 * … * (365-49)/365,这样至少两个人生日相同的概率就是1 – 这个值。
- public double caculateProbability(int n){
- double x = 1;
- for(int i=0; i<n; i++){
- x *= (365.0-i)/365.0;
- }
- double prob = Math.round((1-x) * 100);
- return prob/100;
- }
Read full article from 算法导论 5.4-1 - newdye的专栏 - 博客频道 - CSDN.NET