不能在月球上做的事情,你认为不可能发生的事情有哪些

最硬核的技术博客,使用代码展示一下,出乎人们常识的“不可能”不能在月球上做的事情。

不能在月球上做的事情,你认为不可能发生的事情有哪些

大家在生活领域,历史领域,教育领域,艺术领域,

不能在月球上做的事情,你认为不可能发生的事情有哪些

从不同角度口述了一些不可能发生的事。

不能在月球上做的事情,你认为不可能发生的事情有哪些

科技领域,通过代码,让事实说话

不能在月球上做的事情,你认为不可能发生的事情有哪些

硬币问题概率论,是来自上帝的学问。

经典概率模型中,有一个共同特点:

1 - 试验的样本空间只包含有限个元素;

2 - 试验中每个基本事件发生的可能性相同。

抛硬币问题,就是一个经典的等可能概型。

每一次抛掷硬币,要么正面,要么反面,且正反面出现的机会均等。

更均等的随机函数我们下面示例,将会使用PHP实现,随机函数使用mt_rand。它可以更好更快地生成随机数。

为了检验其随机性,我们使用一个检测的测试用例,测试一下。代码如下:

经过10^8次方运算,也就是一亿次循环,得到结果如下:

zero = 50005017,[50.005016]; one = 49994984,[49.994984].

zero = 49999797,[49.999797]; one = 50000204,[50.000203].

zero = 50004411,[50.004410]; one = 49995590,[49.995590].

zero = 50003164,[50.003163]; one = 49996837,[49.996837].

zero = 49999658,[49.999658]; one = 50000343,[50.000342].

zero = 50002590,[50.002589]; one = 49997411,[49.997411].

在命令行多终端同时运行,所得结果如上。可见出现0/1的机会均等。

三枚硬币我们扩展开来说,依次抛出三枚硬币,所得的正反情况。

每一组所得的结果,无外乎下面这几种情况:

0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1一共八种情况。

老规矩,运行一亿次,看代码和结果。

各种情况概率很平均,没有明显偏差,这与预期相符。

同样地,一次抛出3枚硬币,所得概率基本相同,代码如下:

结果一样,遵循均等分布。

来玩一把游戏

那么,重点来了,如果我们两个人约定,

依次抛一枚硬币,

遇到 正反反,你给我一元;

遇到 反反正,我给你一元;

一起玩儿吗?

本着程序员该有的懒惰,我们使用程序快速模拟这个过程,看看机会是否均等。

如果机会均等,这就拼的是个人运气,无所谓,一切都是天注定,赢了输了认命。

其实这段代码,我分别使用了10轮,100轮,1000轮,以至一百万轮的结果。

基本印证了一个结果:

上述规则,出现正反反的次数,基本是反反正次数的3倍。

这个游戏是偏离直觉认识的,是不公平的。

不公平之处,就在于前提规则,打断了随机过程。

因为每轮出现正反反,或反反正,立即退出,重新洗牌。

两句多余的话不要相信直觉,在判断一个规则是否公平之前,还是做好调查、模拟、计算。

直觉,有时候,真的不可信。

2022-06-11

2022-06-11