Eu suspeito que a resposta seja ' Por causa da matemática ', mas eu esperava que alguém pudesse dar um pouco mais de percepção em um nível básico ...
Eu estava bisbilhotando o código-fonte BCL hoje, observando como algumas das classes que eu usei antes foram realmente implementadas. Eu nunca tinha pensado em como gerar números aleatórios (pseudo) antes, então decidi ver como isso era feito.
Fonte completa aqui: http://referencesource.microsoft.com/#mscorlib/system/random.cs#29
private const int MSEED = 161803398;
Esse valor MSEED é usado toda vez que uma classe Random () é propagada.
De qualquer forma, eu vi esse 'número mágico' - 161803398 - e não tenho a menor idéia do por que esse número foi selecionado. Não é um número primo ou uma potência de 2. Não é "meio caminho" para um número que parecia mais significativo. Eu olhei para ele em binário e hexadecimal e bem, parecia apenas um número para mim.
Tentei procurar o número no Google, mas não encontrei nada.
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.
inextp = 31;
, mas o código-fonte da Random
classe o exibe como se inextp = 21;
alguém tivesse digitado errado, causando esse bug .