Lesen Sie diese Antwort auf diese SO-Frage: Warum kombinieren wir keine Zufallszahlengeneratoren? , es spricht über
sehr hochwertiges PRNG (Pseudo Random Number Generator)
Ich frage mich daher, was ein qualitativ hochwertiges PRNG ausmacht. Ich nehme an, Sie können es als "zufälliger" zusammenfassen, aber
Frage 1: Welche Eigenschaften eines PRNG werden verwendet, um zu beschreiben, wie "zufällig" oder "gut" es ist?
Frage 2: Wenn Sie ein PRNG mit schlechter Qualität haben, gibt es eine Möglichkeit, die Qualität zu verbessern?
Antworten:
Es gibt mehrere Kriterien für die Qualität eines PRNG:
Die letzten beiden Kriterien sind eng miteinander verbunden.
Wenn Sie ein PRNG von schlechter Qualität haben, können Sie es häufig durch Härteverstärkung verbessern . Nehmen Sie mehrere Kopien des PRNG (mit verschiedenen Zufallsschlüsseln) und XOR sie zusammen. In vielen (wenn auch nicht allen) Fällen wird dies die Qualität erheblich verbessern.
quelle
Es gibt praktische Überlegungen: Wie einfach zu bedienen? Wie schnell? Wie einfach ist es, eine andere Folge von Zufallszahlen zu erzeugen? Wie einfach ist es, die Zufallszahlen wiederzugeben (wenn Sie beispielsweise 10 Milliarden Zufallszahlen generiert haben, können Sie dann genau dieselben 10 Milliarden Zufallszahlen erneut generieren?)
Die große Frage: Verhalten sich die generierten Zahlen wie eine Folge von Zufallszahlen? Das erste PRNG, das ich jemals verwendet habe, hatte die bizarre Eigenschaft von zwei aufeinanderfolgenden Werten, das zweite war mit einer Wahrscheinlichkeit von etwa 0,6 größer. Nicht sehr zufällig. Sie können also alle Arten von statistischen Tests durchführen und prüfen, ob sich Ihr Zufallszahlengenerator zufällig verhält. Je mehr es sich zufällig verhält, desto besser.
Und dann kommt die kryptografische Zufälligkeit. Wenn ich Ihnen die letzten n Zufallszahlen gebe und vollständig weiß, wie sich der Zufallszahlengenerator verhält, können Sie dann die nächste Zufallszahl vorhersagen? Wenn ja, ist dies in Situationen, in denen Sie Gegner haben, ungeeignet.
quelle
Ich würde der Liste der gewünschten Qualitäten eine gleichmäßige Verteilung hinzufügen .
quelle