Priming der Mersenne twister PRNG

8

Es scheint eine gewisse Mythologie um die Verwendung von mt19937 zu geben, insbesondere, dass die Anzahl der produzierten Bits "gesättigt" wurde durch den Generator sollte ignoriert werden, um nur so nah wie möglich Pseudozufälligkeit zu haben.

Beispiele für Code, den ich gesehen habe, sind wie folgt:

%Vor%

Meine Fragen sind:

  1. Ist dieser Mythos oder gibt es eine Wahrheit zu allem?

  2. Wenn es etwas durchführbar ist, wie viele Bits sollten ignoriert werden? wie die Zahlen, die ich gesehen habe scheinen willkürlich zu sein

Sebastian Mach 29.10.2012, 01:20
quelle

1 Antwort

4

Das Papier im ersten Kommentar, Mersenne Twister mit verbesserter Initialisierung , ist nicht irgendein Typ, er ist einer der beiden Co-Autoren des Papiers, auf dem die Boost-Implementierung basiert.

Das Problem bei der Verwendung einer einzelnen 32-Bit-Ganzzahl (4 Bytes) als Startwert für diesen Generator besteht darin, dass der interne Status des Generators gemäß der Verbessern Sie die Dokumentation . Es ist nicht allzu überraschend, dass solch ein kleiner Keim eine Weile braucht, um sich in den Rest des internen Zustands des Generators zu verbreiten, zumal der Twister nicht kryptographisch sicher sein soll.

Um auf Ihre Bedenken einzugehen, dass Sie den Generator eine Weile laufen lassen müssen, um zu beginnen, wollen Sie den alternativen (und expliziten) Konstruktor.

%Vor%

Dies ist der Geist des dritten Kommentars, bei dem Sie mit etwas länger als einer einzelnen Ganzzahl initialisieren. Die Sequenz kommt von einem Generator. Um einen Entropie-Pool zu verwenden, schreiben Sie einen Generator als einen Adapter aus einem Entropie-Pool und geben bei Bedarf Werte aus dem Pool zurück.

    
eh9 08.11.2012 14:48
quelle

Tags und Links