Isolierter Fibonacci Generator

Ein Isolierter Fibonacci Generator (LFG) ist ein Beispiel eines Pseudozufallszahlengenerators. Diese Klasse des Zufallszahlengenerators wird gezielt eine Verbesserung auf dem congruential geradlinigen 'Standard'-Generator zu sein. Diese basieren auf einer Verallgemeinerung der Folge von Fibonacci.

Die Fibonacci Folge kann durch die Wiederauftreten-Beziehung beschrieben werden:

:

Folglich ist der neue Begriff die Summe der letzten zwei Begriffe in der Folge. Das kann zur Folge verallgemeinert werden:

:

In welchem Fall der neue Begriff eine Kombination irgendwelcher zwei vorherigen Begriffe ist. M ist gewöhnlich eine Macht 2 (M = 2), häufig 2 oder 2. Der Maschinenbediener zeigt eine allgemeine binäre Operation an. Das kann entweder Hinzufügung, Subtraktion, Multiplikation oder die bitwise Arithmetik exklusiv - oder Maschinenbediener (XOR) sein. Die Theorie dieses Typs des Generators ist ziemlich kompliziert, und es kann einfach nicht genügend sein, zufällige Werte für j und k zu wählen. Diese Generatoren neigen auch dazu, zu initialisation sehr empfindlich zu sein.

Generatoren dieses Typs verwenden k Wörter des Staates (sie 'erinnern' 'sich' an die letzten K-Werte).

Wenn die verwendete Operation Hinzufügung ist, dann wird der Generator beschrieben, weil ein Zusatz Fibonacci Generator oder ALFG Isoliert hat, wenn Multiplikation verwendet wird, ist es Isolierter Fibonacci Generator oder MLFG eines Multiplicative, und wenn die XOR Operation verwendet wird, wird es ein verallgemeinertes Zwei-Klapse-Feed-Back-Verschiebungsregister oder GFSR genannt. Der Mersenne Dreher-Algorithmus ist eine Schwankung auf einem GFSR. Der GFSR ist auch mit dem Geradlinigen Feed-Back-Verschiebungsregister oder LFSR verbunden.

Eigenschaften von isolierten Generatoren von Fibonacci

Isolierte Fibonacci Generatoren haben eine maximale Periode (2 - 1) *2, wenn Hinzufügung oder Subtraktion, und (2-1) *k verwendet werden, wenn exklusiv - oder Operationen verwendet werden, um die vorherigen Werte zu verbinden. Wenn, andererseits, Multiplikation verwendet wird, ist die maximale Periode (2 - 1) *2, oder 1/4 der Periode des zusätzlichen Falls.

Für den Generator, um diese maximale Periode, das Polynom zu erreichen:

:y = x + x + 1

muss über die ganzen Zahlen mod 2 primitiv sein. Werte von j und k, der diese Einschränkung befriedigt, sind in der Literatur veröffentlicht worden. Populäre Paare sind:

: {j = 7, k = 10}, {j = 5, k = 17}, {j = 24, k = 55}, {j = 65, k = 71}, {j = 128, k = 159} http://www.ccs.uky.edu/csep/RN/RN.html, {j = 6, k = 31}, {j = 31, k = 63}, {j = 97, k = 127}, {j = 353, k = 521}, {j = 168, k = 521}, {j = 334, k = 607}, {j = 273, k = 607}, {j = 418, k = 1279}

http://www.nersc.gov/nusers/resources/software/libs/math/random/www2.0/DOCS/www/parameters.html

Eine andere Liste von möglichen Werten für j und k ist auf der Seite 29 des Bands 2 Der Kunst der Computerprogrammierung:

: (24,55), (38,89), (37,100), (30,127), (83,258), (107,378), (273,607), (1029,2281), (576,3217), (4187,9689), (7083,19937), (9739,23209)

Bemerken Sie, dass die kleinere Zahl kurze Perioden hat (nur einige "zufällige" Zahlen werden erzeugt, bevor die erste "zufällige" Zahl wiederholt wird und die Folge-Wiederanfänge).

Es ist erforderlich, dass mindestens ein der ersten k gewählt schätzen, um den Generator zu initialisieren, seltsam sein.

Es ist darauf hingewiesen worden, dass gute Verhältnisse zwischen j und k ungefähr das goldene Verhältnis sind.

Probleme mit LFGs

In einer Zeitung auf Vier-Klapse-Verschiebungsregistern stellt Robert M. Ziff fest, dass "Es jetzt weit bekannt ist, dass solche Generatoren, insbesondere mit den Zwei-Klapse-Regeln wie R (103, 250), haben ernste Mängel. Marsaglia hat sehr schlechtes Verhalten mit R (24,55) und kleinere Generatoren beobachtet und hat abgeraten, Generatoren dieses Typs zusammen zu verwenden.... Das grundlegende Problem von Zwei-Klapse-Generatoren R (a, b) besteht darin, dass sie eine eingebaute Drei-Punkte-Korrelation zwischen, und, einfach gegeben durch den Generator selbst haben... Während diese Korrelationen über die Größe des Generators selbst ausgebreitet werden, können sie zweifellos noch zu bedeutenden Fehlern führen.".

Die Initialisierung von LFGs ist ein sehr kompliziertes Problem. Die Produktion von LFGs ist zu anfänglichen Bedingungen sehr empfindlich, und statistische Defekte können am Anfang erscheinen sondern auch regelmäßig in der Produktionsfolge, wenn äußerste Sorge nicht genommen wird. Ein anderes potenzielles Problem mit LFGs besteht darin, dass die mathematische Theorie hinter ihnen unvollständig ist, es notwendig machend, sich auf statistische Tests aber nicht theoretische Leistung zu verlassen.

Gebrauch

  • Freeciv verwendet einen isolierten Generator von Fibonacci mit {j = 24, k = 55} für seinen Zufallszahlengenerator.
  • Die Zunahme-Bibliothek schließt eine Durchführung eines isolierten Generators von Fibonacci ein.
  • Machen Sie damit Abstriche, tragen ein isolierter Generator-Motor von Fibonacci, wird in den C ++ 11 Bibliothek eingeschlossen.
  • Die Orakel-Datenbank führt diesen Generator in seinem DBMS_RANDOM Paket (verfügbar im Orakel 8 und neuere Versionen) durch.

Siehe auch


Dr Feelgood / Psychopharmacology
Impressum & Datenschutz