一尘不染

161803398是“特殊”号码吗?在Math.Random()内部

algorithm

我怀疑答案是“ 因为数学 ”,但是我希望有人可以在基本层面上提供更多的见解…

今天,我在研究BCL源代码,看看我以前使用的某些类是如何实现的。之前我从未考虑过如何生成(伪)随机数,所以我决定看看它是如何完成的。

此处的完整源代码:http
:
//referencesource.microsoft.com/#mscorlib/system/random.cs#29

private const int MSEED = 161803398;

每次植入Random()类时都使用此MSEED值。

无论如何,我看到了这个“魔术数字”-161803398-我对为什么选择该数字没有最模糊的主意。它不是素数或2的幂,不是看似有意义的数字的“半途而废”。我用二进制和十六进制格式查看了它,对我来说,它就像是一个数字。

我尝试在Google中搜索该号码,但未找到任何内容。


阅读 286

收藏
2020-07-28

共1个答案

一尘不染

不,但是它基于Phi(“黄金比例”)。

161803398 = 1.61803398 * 10^8 ≈ φ * 10^8

更多关于黄金分割率的信息

而一个 真正的
好读的休闲数学家在这里

我找到了一份关于随机数生成器的研究论文,该论文与这一主张相吻合。(请参阅第53页。)

2020-07-28