有一个名为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
方法,但我总是得到:
这是唯一的错误。
这是测试用例
Test.expect(calculateProbability(5)==0.03);
Test.expect(calculateProbability(1000)==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
}