您的位置:首页 > 职场人生

程序员告诉你天生一对在一起的概率多小

2016-12-14 20:08 337 查看

概述

越长大越不相信天生一对的存在,即使是有也几乎不可能在一起。作为一个程序员,我打算用程序来计算一下,传说中的天生一对能在一起的概率是多少。

全球范围内

我先假设你的另一半是在全球范围内的,即可跨国家和种族。在我写到这里的时候,全球人口情况如下图所示



其中世界人口总数大约是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
就是说整个中国,大概只有一对天生一对能在一起的。

结言

其实上面的数据十分不严谨,大家当做看笑话就好了。我想说的是

哪来的那么多天生一对和命中注定,全靠两个人磨合罢了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  程序员 情感