计算大数的生日概率
发布时间:2020-12-14 04:35:26 所属栏目:大数据 来源:网络整理
导读:在一个满是n个人的房间里,两个人生日相同的概率是1-p.哪里: p = 365! / 365^n(365 - n)! 显然这些数字太大了,无法解决这个问题,这有什么创造性的方法呢? 我已经使用模拟以不同的方式解决了这个问题,但我认为公式可能更优雅. 解决方法 你可以利用365!/(365
在一个满是n个人的房间里,两个人生日相同的概率是1-p.哪里:
p = 365! / 365^n(365 - n)! 显然这些数字太大了,无法解决这个问题,这有什么创造性的方法呢? 我已经使用模拟以不同的方式解决了这个问题,但我认为公式可能更优雅. 解决方法
你可以利用365!/(365-n)! = 365 * 364 * … *(365-(n-1))
所以要计算这个术语(让它是A = 365!/(365-n)!)你可以简单地将上面的数字这样: unsinged double A=1; // to make sure there is no overflow for(int i=0;i<n;i++) A*=365-i; 更进一步:p = A / 365 ^ n =(364 * 363 * … *(365-(n-1)))/ 365 ^(n-1)= 364/365 * 363/365 * …(365-(n-1))/ 365. 所以p可以像这样计算: unsigned double p=1; for(int i=0;i<n;i++) p*= (365-i)/365.0; 在线性时间 我认为这应该有效:P (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |