相同的生日概率代码值不是预期的

时间:2016-09-23 17:09:58

标签: javascript algorithm

有一个名为Same Birthday Probabilty的代码战挑战挑战是:

  

考虑到房间中有n个人,计算任何人的概率   那个房间里的两个人生日相同(假设每天365天   年=忽略闰年)。答案应该是两位小数,除非整数   (0或1)例如0.05

我完成了接下来的挑战:

function calculateProbability(n){
var result = 0;
  for(i=1;i<n;i++){
      var total = (365 - i) / 365
      result = result * total 
  }
  return Math.round(result)
}

使用和不使用Math.round方法,但我总是得到:

  

✘价值不是预期的   enter image description here

     

这是唯一的错误。

这是测试用例

Test.expect(calculateProbability(5)==0.03);
Test.expect(calculateProbability(1000)==1);

1 个答案:

答案 0 :(得分:2)

首先,您应该将结果更改为1,因为乘以0始终会产生零。您计算的结果是解决方案的补充,它是n人生日不同的概率。最后,你不是将你的数字四舍五入到小数点后两位。

function calculateProbability(n){
var result = 1;
  for(i=1;i<n;i++){
      var total = (365 - i) / 365
      result = result * total 
  }
  return Math.round((1-result)*100 )/100
}