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 derRandom
Klasse hat es so, alsinextp = 21;
ob jemand es falsch geschrieben hat, was diesen Fehler verursacht .Antworten:
Nein, aber es basiert auf Phi (dem "goldenen Schnitt").
Mehr zum Goldenen Schnitt hier .
Und eine wirklich gute Lektüre für den Gelegenheitsmathematiker hier .
Und ich habe ein Forschungspapier über Zufallszahlengeneratoren gefunden, das dieser Behauptung entspricht. (Siehe Seite 53.)
quelle
"One can’t even fathom the repercussions if security flaws in the implementation (or design) of the SSL protocol are to be found."
Diese Zahl stammt aus dem Goldenen Schnitt 1,61803398 * 10 ^ 8 . Matt gab eine nette Antwort, was diese Nummer ist, deshalb werde ich nur ein wenig über einen Algorithmus erklären.
Dies ist keine spezielle Nummer für diesen Algorithmus. Der Algorithmus ist Knuths subtraktiver Zufallszahlengenerator-Algorithmus und die Hauptpunkte davon sind:
Der Generator basiert auf der folgenden Rekursion: X n = (X n-55 - X n-24 ) mod m, wobei n ≥ 0 ist. Dies ist ein Teilfall des verzögerten Fibonacci-Generators : X n = (X n-j @ X n-k ) mod m, wobei 0 <k <j und @ eine beliebige binäre Operation ist (Subtraktion, Addition, xor).
Es gibt verschiedene Implementierungen dieses Generators. Knuth bietet in seinem Buch eine Implementierung in FORTRAN an. Ich habe den folgenden Code mit folgendem Kommentar gefunden:
Ein bisschen mehr finden Sie hier. Beachten Sie, dass dies eigentlich keine Forschungsarbeit ist (wie von Math angegeben), sondern nur eine Masterarbeit.
Die Menschen in der Kryptographie wie irrationale Zahl zu verwenden (
pi
,e
,sqrt(5)
) , weil es eine Vermutung ist , dass Ziffern solcher Zahlen erscheint mit gleicher Frequenz und damit eine hohe haben Entropie . Sie finden diese verwandte Frage unter Security StackExchange , um mehr über solche Nummern zu erfahren. Hier ist ein Zitat:quelle