Ich brauche einen guten Pseudozufallszahlengenerator, der wie eine reine Funktion aus seiner vorherigen Ausgabe ohne Verstecken des Zustands berechnet werden kann. Unter „gut“ Ich meine:Gibt es "gute" PRNG, die Werte ohne versteckten Zustand erzeugen?
muss ich in der Lage sein Generator in einer solchen Art und Weise parametrisieren, dass es für
2^n
Iterationen mit beliebigen Parametern (oder mit einigen großen Teilmenge davon) laufen alle oder fast alle Werte abdecken sollte zwischen0
und2^n - 1
, wobein
die Anzahl der Bits im Ausgabewert ist.Combined Generatorleistung von
n + p
Bits müssen alle abdecken oder fast alle Werte zwischen0
und2^(n + p) - 1
wenn ich laufe es für2^n
Iterationen für jede mögliche Kombination der Parameter, wop
die Anzahl der Bits in Parameter ist.
beispielsweise LCG kann wie eine reine Funktion berechnet werden, und es kann erste Bedingung erfüllen, aber es kann nicht die zweite erfüllen. Sagen wir, wir haben 32-Bit-LCG, m = 2^32
und es ist konstant, unsere p = 64
(zwei 32-Bit-Parameter a
und c
), n + p = 96
, so müssen wir Daten von drei Ints von Ausgabe zu peek, um zweite Bedingung zu erfüllen. Bedauerlicherweise kann die Bedingung nicht erfüllt werden, da die Abfolge von ungeraden und geraden Eingängen in der Ausgabe streng alterniert. Um dies zu überwinden, muss ein versteckter Zustand eingeführt werden, aber das macht die Funktion nicht rein und bricht die erste Bedingung (lange versteckte Periode).
EDIT: Streng genommen, möchte ich Familie von p
Bits und mit vollen Zustand von n
Bits parametrisiert Funktionen, die jeweils alle möglichen Binärketten von p + n
Bits in einer einzigartigen „randomish“ Art und Weise zu erzeugen, nicht nur kontinuierlich (p + n)
erhöht wird - Bit int. Parametrisierung erforderlich, um diesen einzigartigen Weg zu wählen.
Will ich zu viel?
Sie wollen einen Zufallszahlengenerator, um eine fast eindeutige Sequenz zu erzeugen? –
@Moron, ja. Der Generator sollte in der Lage sein, alle oder fast alle möglichen unterschiedlichen Bitfolgen vordefinierter Länge L in mehreren Durchläufen mit verschiedenen Parametern zu erzeugen, die nicht mehr als 2^n Iterationen für jeden Lauf machen, wobei n
actual
Wenn Sie in k-Aufrufen k eindeutige Zahlen erwarten, ist es überhaupt nicht zufällig. Für z.B. Ich kann immer den letzten vorhersagen! Oder habe ich falsch verstanden? –