主题:【讨论】【跟进】趣味数学题 (三) -- 数值分析
这段
anotherKidIsBoyCount=0;
for (Stat st : ls) {
if (st.k1) { //if first kid is selected and first kid is a boy
if (st.k2) {// if second kid is a boy, increase the counter
anotherKidIsBoyCount++;
}
}
else {
if (st.k2) { // if 2nd kid is selected , and second it is a boy
if (st.k1) { //if first kid is a boy, increase the counter
anotherKidIsBoyCount++;
}
问题出在这个“ else ”上。这里你进入选第二个男孩的条件是第一个孩子不为男。问题是,邻居要带第二个男孩出去的情况只有两种,BB 或 GB。你的条件把 GB 排除了。但也同时排除了 BB。 如果你在两个循环里各加一个 counter 看各自的积累,你会发现只有第一个循环起了作用,第二个循环的累积是 0。
这样你就没有真正模拟你自己在程序里想模拟的现象。
正确的模拟是把 “ else ”去掉,分母则是 老大、老二分别带出去散步的男孩的组合。组合见下表:
同行 | 留家 |
---|---|
大哥(B1) | 二哥(B2) |
二哥(B2) | 大哥(B1) |
大哥(B1) | 二姐(G2) |
二哥(B2) | 大姐(G1) |
另一个孩子是男孩的几率是二分之一。
- 相关回复 上下关系8
压缩 4 层
😄代码来了 懒厨 字1478 2021-05-07 10:20:59
🙂这个趣味数学题 (三)大概是你对了 1 zero9999 字667 2021-05-07 23:11:16
😄我大学毕业后就没写过C了 1 懒厨 字380 2021-05-08 02:18:26
🙂你的代码好像有问题
🙂我现在同意你的观点 唐家山 字24 2021-05-08 04:16:13
🙂我试着用另一种角度解释一下这个问题 唐家山 字1402 2021-05-07 21:00:38
🙂“先看到一个男孩”与“家里至少存在一个男孩”不是等价的 4 孟词宗 字702 2021-05-07 21:41:52
🙂好像还是有点问题 唐家山 字288 2021-05-07 21:25:55