程序员告诉你天生一对在一起的概率多小
2016-12-14 20:08
337 查看
概述
越长大越不相信天生一对的存在,即使是有也几乎不可能在一起。作为一个程序员,我打算用程序来计算一下,传说中的天生一对能在一起的概率是多少。全球范围内
我先假设你的另一半是在全球范围内的,即可跨国家和种族。在我写到这里的时候,全球人口情况如下图所示![](http://i.imgur.com/FnqK0Xj.png)
其中世界人口总数大约是7,471,091,664,把零头去掉即把91,664去掉,就当是同性恋、无性恋和终生单身的人数吧(这三类不在本次测试范围内)。那就剩7,471,000,000,那我现在假设男女比例是1:1(应该差不了多远吧),那么就是男女各3,735,500,000人,即有3,735,500,000对。
现在我就开始用程序模拟,大概思路如下。
定义一个总对数,有3,735,500,000对
然后分别随机生成男性编号和女性编号,编号相同的代表配对成功,总共3,735,500,000对所以这件事情做3,735,500,000次
将配对成功的数除以总对数得出比例
代码如下
public class Main { public static void main(String[] args) { long total = 7471000000L;// 总人数 long couple = total / 2;// 总对数 long right = 0;// 配对成功的次数 for (long j = 1; j <= couple; j++) { // 男性编号 long man = (long) (Math.random() * 10000000000L) % couple; // 女性编号 long woman = (long) (Math.random() * 10000000000L) % couple; if (man == woman) { right++; } } // 配对成功的次数占总次数的比例 double result = ((double)right)/couple; System.out.println(result); } }
最后在我的酷睿i5标压的CPU高速运转的情况下
计算了差不多半个小时,终于输出
5.354035604336769E-10,这是科学计数法的表示,即是5.354035604336769 x 10^-10,即是将小数点左移10位,最后是0.0000000005354035604336769,讲通俗点,就是七十四亿七千一百万人中,大概只有四个人也就是两对天生一对能在一起。
中国范围内
好,现在将范围缩小到中国。根据最近的第六次人口普查显示我国人口数量为13.39亿,这是2010的人口总数,官方预计的我国人口增长速度为每年大约0.57%,故到2016年我国人口总数应该为13.85亿左右,考虑到官方数据有一定的保留性,故2016年我国人口总数实际上应该达到了14亿。好,就算他14亿。还是按照上面的思路,具体我就不展现了。测试的结果是
1.4285714285714286E-9,就是说整个中国,大概只有一对天生一对能在一起的。
结言
其实上面的数据十分不严谨,大家当做看笑话就好了。我想说的是哪来的那么多天生一对和命中注定,全靠两个人磨合罢了。
相关文章推荐
- 我来告诉你,草根程序员如何进入BAT
- 天瑞地安科技集团程序员波波告诉你程序员必备开发工具
- 大数据告诉你:程序员如何涨薪水
- 一个老程序员告诉你:中国程序员为什么要跳槽
- 如何成为月入五万的程序员,他们告诉你!
- 做了十年程序员,他或许可以告诉你什么
- 程序员告诉你如何用技术手段玩转冲顶大会
- 你问程序员为什么钱多话少死得早?来~我告诉你!
- 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。
- Debug经验总结:优化、程序员和概率
- 以程序员专业的角度告诉你,头条推荐机制具体是怎么样的
- 为什么用 Java—— 一个 Python 程序员告诉你
- 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。
- AAA 草根程序员如何进入 BAT?我来告诉你
- 告诉你月薪3万的程序员都避开了哪些坑?
- 还想找个程序员当女婿?如果告诉你程序员就是下一代蓝领呢?
- Python大神告诉你成为优秀程序员的几个个有效方法
- 为什么用Java——一个来自Python阵营的程序员告诉你
- 程序员告诉你如何每天只工作4小时
- 程序员眼中的统计学(3)】概率计算:把握机会