2名矿工拥有相同世界的概率

大家好! 最近,我对以下问题感兴趣:“我的世界中有2位玩家拥有同一个世界吗?”

事实是,《我的世界》世界是从给定种子随机生成的。 它可以手动设置,也可以由政府伪随机接收。 值得注意的是,相同的种子产生了相同的世界。

该游戏非常受欢迎,因此不可能直接采访所有玩家并比较他们的单身世界。 但是,我们总是可以计算出此事件的概率。 似乎:我们所需要做的就是计算满足此事件的基本结果的数量,并将其划分为所有基本结果的集合。 不幸的是,这是一项非常艰巨的任务,因此我想起了“生日悖论”。

矛盾的是,在一个23人的小组中,有50%的概率是两个人的生日相吻合。 显然,任务类似于我们的任务。 如何解决的? 非常简单:事实证明,计算组中每个人有一个独特生日的可能性要容易得多。 为此,请一个人记住他的生日,然后第二个生日,他的一天与第一个生日不一致的概率将相等

$$显示$$ p_2 = 1- \ frac {1} {365} $$显示$$

即 100%减去其生日相同的可能性。 我们以第三个为例,考虑他的生日与前两个生日不一致的可能性

$$显示$$ p_3 = 1- \ frac {2} {365} $$显示$$

依此类推,直到第n个人

$$显示$$ p_n = \ frac {n-1} {365} $$显示$$

然后是没有人匹配的概率

$$显示$$ p = 1 *(1- \ frac {1} {365})*(1- \ frac {2} {365})* ... *(1- \ frac {n-1} { 365})$$显示$$

以及至少2个匹配项的概率

$$ display $$ p_ {search} = 1-p $$ display $$



仍然仅将这种解决方案应用于我们的案例。 我的世界只有2 ^ 64个可能的种子,大约有2亿玩家。 所以我们的公式看起来

$$ display $$ p = 1 *(1- \ frac {1} {2 ^ {64}})*(1- \ frac {2} {2 ^ {64}})* ... *(1- \ frac {2 * 10 ^ 8} {2 ^ {64}})$$显示$$

手动计数非常耗时,所以我写了一个小Python 3程序来代替我。

图片

如果有人感兴趣,这里是程序代码,但是非常简单。

a = 2**64 n = 200000000 p = 1 for i in range(n): p *= (1 - i/a) print('Chance that 2 players of minecraft have the same seed: ' + str((1-p)*100) + '%') 


结果是0.1%,顺便说一句,考虑到可能的种子数量,这是很多。

感谢您的关注!

参考文献:

生日悖论
有多少人玩我的世界
我的世界有多少种子

Source: https://habr.com/ru/post/zh-CN460629/


All Articles