笔试题目
在一个世世代代都重男轻女的村庄里,村长决定颁布一条法律:村子里没有生育出儿子的夫妻可以一直生育直到生出儿子为止假设现在村子上的男女比例是1:1,这条法律颁布之后的若干年后村子的男女比例将会()
A. 男的多 B. 女的多 C. 一样多 D. 不能确定
答案 : C
说明:
其实这个笔试题本来是一道概率论的题,完全可以用概率论的知识来解释的,生男孩和生女孩本来是两个独立事件。 当我在算法爱好者微信公众号里看到此题下面网友的评论后发现,有几个网友用python等其他编程语言做出来了,之后我打算用javascript来实现。 由于我个人还是比较熟悉javascript, 所以我就提供了javascript代码,两种版本,码农级别的和优化精简级别的。 欢迎java, python, c,c## 等大神们在下面评论,并提供你们的思路及代码。谢谢!
用代码验证结果:
普通码农级别:
12345678910111213141516
var coupleCount = 1000;/*假设该村里的夫妇总共有coupleCount*/var all=[];for(var i=0;i<coupleCount;i++){ var arrTemp =['1','0',Math.random()>0.5?'0':'1']; while(arrTemp[2].indexOf('1') == -1){ arrTemp[2] += Math.random()>0.5?'0':'1'; } all.push(arrTemp); }var M=0,F=0,str=all.toString();for(var j=0;j<str.length;j++){ str[j]=='1'&&M++; str[j]=='0'&&F++;}console.log('假设该村庄有'+coupleCount+'对夫妻,最终该村有男:'+M+" 女:"+F);/*打开浏览器,点击f12,切换到console页面,将上述代码贴到console页面,按回车键,查看结果。修改coupleCount的值,再运行一遍,数值越大越接近真实值。*/
大神级别(对我来说是大神级别 ^_^):
1234567891011121314
var n=1000;/*假设该村庄有n对夫妻*/((t)=>{ var All=[],M=0,F=0; for(var i=0;i<t;i++){ var temp=['1','0',Math.random()>0.5?'0':'1']; while( !temp[2].match('1') ){temp[2]+=Math.random()>0.5?'0':'1';} All.push(temp); } All.forEach((v)=>{ v.forEach((j)=>{j=='1'?M+=1:F+=1}); }); console.log('假设该村庄有'+t+'对夫妻,最终该村有男:'+M+" 女:"+F);})(n)/*打开浏览器,点击f12,切换到console页面,将上述代码贴到console页面,按回车键,查看结果。修改coupleCount的值,再运行一遍,数值越大越接近真实值。*/
提示:
本人大学毕业不久,工作经验不长,而且是一名少数民族,维吾尔族,汉语是我第二语言,因此在难免会有一些错别字,或者有使用不当的词,或者在提供的代码中有bug, 或者解释思路有错误,你若发现错误请在下面通过评论来指出错误,或者通过扫描下面的微信二维码,加我微信来告知我。下面我还提供了我的个人微信二维码,如果想跟我讨论技术问题,就加我个人微信。另外我还提供了我的个人微信转账二维码,如果你觉得我发布的内容有用,或者支持我的努力,请给我打个赏吧,让我更有动力去发布更有用的技术干货。谢谢!
![]() | ![]() |

