我怀疑答案是',因为数学',但我希望有人可以在基本水平上提供更多的见解...
今天,我在研究BCL源代码,看看我以前使用过的某些类是如何实现的。之前我从未考虑过如何生成(伪)随机数,所以我决定看看它是如何完成的。
完整资料在这里:http://referencesource.microsoft.com/#mscorlib/system/random.cs#29
private const int MSEED = 161803398;
每次植入Random()类时都使用此MSEED值。
无论如何,我看到了这个“魔术号码”-161803398-我对为什么选择该号码没有最模糊的主意。它不是素数或2的幂,不是看似重要的数字的“一半”。我以二进制和十六进制形式查看了它,对我来说,它就像一个数字。
我尝试在Google中搜索该号码,但未找到任何内容。
最佳答案
不,但是它基于Phi(“黄金比例”)。
161803398 = 1.61803398 * 10^8 ≈ φ * 10^8
More about the golden ratio here。
And a really good read for the casual mathematician here。
我发现a research paper on random number generators与此断言相符。 (请参阅第53页。)