我怀疑答案是“ 因为数学 ”,但是我希望有人可以在基本层面上提供更多的见解...
今天,我在研究BCL源代码,看看我以前使用的某些类是如何实现的。之前我从未考虑过如何生成(伪)随机数,所以我决定看看它是如何完成的。
此处的完整源代码:http : //referencesource.microsoft.com/#mscorlib/system/random.cs#29
private const int MSEED = 161803398;
每次植入Random()类时都使用此MSEED值。
无论如何,我看到了这个“魔术数字”-161803398-我对为什么选择该数字没有最模糊的主意。它不是素数或2的幂,不是看似重要的数字的“一半”。我用二进制和十六进制格式查看了它,对我来说,它就像是一个数字。
我尝试在Google中搜索该号码,但未找到任何内容。
The current implementation of the Random class is based on Donald E. Knuth's subtractive random number generator algorithm. For more information, see D. E. Knuth. "The Art of Computer Programming, volume 2: Seminumerical Algorithms". Addison-Wesley, Reading, MA, second edition, 1981.