西西河

主题:【讨论】【跟进】趣味数学题 (三) -- 数值分析

共:💬53 🌺38
全看分页树展 · 主题 跟帖
家园 你的代码好像有问题

这段

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)

另一个孩子是男孩的几率是二分之一。

通宝推:唐家山,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河