笔试题——硬币与金币(概率)
题目 ( 2020/2/28 晚刚做的笔试。当时就差一点了,有点遗憾,还是做出来吧。)
1000枚硬币中有10枚金币,现在随机取n枚硬币,取到金币的概率是多少?(保留六位小数)思路 【笔试题——硬币与金币(概率)】首先:1000枚硬币分为10枚金币与990非金币。若n大于990,则必定取到金币。
取到金币的概率 = 1 - 没有取到金币的概率。
所以,我们只需要计算没有取到金币的概率即可。
现在我们需要用到排列组合了。
没有取到金币的概率 = 所取n枚硬币全为非金币的概率 = 在990枚非金币中随机取n枚的组合数量 / 在1000枚硬币中随机取n枚的组合数量。
在m个物体中随机无序的取出n个物体,有 C(n, m) 种取法。(PS:由于markdown没法输入数学公式,就把 C(n, m) 想象成 n在右上角,m在右下角吧~)
所以,没有取到金币的概率 = C(n, 990) / C(n, 1000) =
(990 * 989 * 988 * … ) / ( 1000 * 999 * 998 * …)
其中分子分母各有n项。
可以看出,从n大于10开始,分子分母就有重复的数可以约分一些了。否则,计算出来的数会过大。
所以还要区分n小于等于10和n大于10的情况。
function func(n) {
if (n > 990) {
return '1.000000';
} else {
let a1 = 1, a2 = 1;
if (n <= 10) {
for (let i = 0;
i < n;
i++) {
a1 *= (990 - i);
a2 *= (1000 - i);
}
} else {
for (let i = 0;
i < 10;
i++) {
a1 *= (991 - n + i);
a2 *= (1000 - i);
}
}
let noGold = a1 / a2;
let p = 1 - noGold;
return p.toFixed(6);
}
}
结果:
文章图片
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 生活随笔|好天气下的意外之喜