Ich vermute, die Antwort lautet " Wegen der Mathematik ", aber ich hatte gehofft, jemand könnte auf einer grundlegenden Ebene ein wenig mehr Einblick geben ...
Ich habe mich heute im BCL-Quellcode umgesehen und mir angesehen, wie einige der Klassen, die ich zuvor verwendet habe, tatsächlich implementiert wurden. Ich hatte noch nie darüber nachgedacht, wie man (Pseudo-) Zufallszahlen generiert, also habe ich mich entschlossen zu sehen, wie es gemacht wird.
Vollständige Quelle hier: http://referencesource.microsoft.com/#mscorlib/system/random.cs#29
private const int MSEED = 161803398;
Dieser MSEED-Wert wird jedes Mal verwendet, wenn eine Random () -Klasse gesetzt wird.
Wie auch immer, ich habe diese 'magische Nummer' gesehen - 161803398 - und ich habe nicht die geringste Ahnung, warum diese Nummer ausgewählt wurde. Es ist keine Primzahl oder Potenz von 2. Es ist nicht der halbe Weg zu einer Zahl, die bedeutender schien. Ich sah es binär und hexadezimal an und nun, es sah für mich nur wie eine Zahl aus.
Ich habe versucht, in Google nach der Nummer zu suchen, aber nichts gefunden.
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;
, aber der Quellcode der Random
Klasse hat es so, als inextp = 21;
ob jemand es falsch geschrieben hat, was diesen Fehler verursacht .