加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

计算大数的生日概率

发布时间: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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读