Ein richtige PRNG (Pseudo-Random Number Generator) Algorithmus wird eine Zykluszeit hat, während die sie nie im gleichen Zustand sein. Wenn Sie den gesamten Zustand des PRNG in der von ihm abgerufenen Zahl aussetzen, finden Sie eine Reihe garantiert eindeutig für den Zeitraum des Generators erhalten.
Eine einfache PRNG , die dies tut , ist das ‚genannt lineare Kongruenz ‘ PRNG , die eine Formel iteriert:
X(i) = AX(i-1)|M
das richtige Paar von Faktoren verwenden, können Sie über einen Zeitraum von 2 ^ 30 (ca. 1 Mrd. Euro) aus einem einfachen PRNG mit einem 32-Bit-Akkumulator erhalten. Beachten Sie, dass Sie einen 64-Bit lange lange temporären Variable benötigen, um das Zwischen ‚AX‘ Teil der Berechnung zu halten. Die meisten, wenn nicht alle C-Compiler wird diese Datentypen unterstützen. Sie sollten es auch mit einem numerischen Datentyp auf den meisten SQL-Dialekte der Lage zu tun.
Mit den richtigen Werten von A und M können wir einen Zufallszahlengenerator mit guten statistischen und geometrischen Eigenschaften erhalten. Es gibt ein berühmtes Papier darüber geschrieben von Fishman und Mooren.
Für M = 2 ^ 31-1 erhalten wir die Werte von A unten verwenden, um eine PRNG mit einem schönen langen Zeitraum (2 ^ 30 IIRC) zu erhalten.
Gute Werte von A:
742,938,285
950,706,376
1,226,874,159
62,089,911
1,343,714,438
Beachten Sie, dass diese Art von Generator ist (per Definition) nicht kryptographisch sicher. Wenn Sie die letzte Nummer generiert daraus wissen kann man vorhersagen , was sie als nächstes tun wird. Leider glaube ich , dass Sie nicht Verschlüsselungssicherheit und garantiert Nichtwiederholbarkeit zugleich erhalten. Für ein PRNG kryptographisch sicher zu sein (zB Blum Blum Shub ) es kann nicht ausreichend in einem Zustand erzeugte Zahl belichten die nächste Zahl in der Folge zu ermöglichen , vorhergesagt werden. Daher wird der innere Zustand breiter ist als die erzeugte Zahl und (um eine gute Sicherheit zu haben) die Frist länger sein als die Anzahl der möglichen Werte , die erzeugt werden können. Dies bedeutet , dass die freigelegte Zahl wird innerhalb der Frist nicht eindeutig sein.
Aus ähnlichen Gründen ist das gleiche gilt für die Langperiodengeneratoren wie der Mersenne - Twister.