Einleitung Oben Hauptseite Zufallszahlen mit Exponentialverteilung  

2 Erzeugung gleichverteilter Zufallszahlen

Wir wollen uns bei den Betrachtungen auf gleichverteilte Zufallszahlen im Intervall beschränken. Für diese ist der Erwartungswert und die Varianz Durch die lineare Transformation kann man dann Zufallszahlen im Intervall erzeugen, z. B. solche mit Mittelwert und durch die Transformation d. h. durch und . Diese Zahlen sind dann in gleichverteilt.
Die Erzeugung von gleichverteilter Zufallszahlen kann man sich als iterative Folge von Transformationen , mit Ausnahme der Identität, aus den Zufallszahlen vorstellen, wobei die aus der Transformation der (gleichverteilten) Zufallszahlen – und folglich auch die nach -facher Anwendung derselben Transformation – erzeugten Zufallszahlen die ursprüngliche (Gleichverteilung-) Verteilung besitzen. Des weiteren muss die Transformation umkehrbar sein. Zumeist werden die Transformationen auf einer Teilmenge der ganzen Zahlen entsprechend der Länge der Computerregister unter Anwendung der hierauf möglichen arithmetischen Operationen durchgeführt. Aufgrund der beschränkten Registerlänge wird nach einer bestimmten Anzahl an Transformationen, spätestens nach Schritten, der Anfangswert wieder erreicht. Um möglichst viele Zufallszahlen zu erzeugen, sollte diese Periodenlänge möglichst groß sein. Auch ist es wichtig, dass im Verlaufe der Iterationen möglichst alle Zahlen mit gleicher Häufigkeit angenommen werden und Lücken vermieden werden, so dass eine Gleichverteilung erreicht wird.
Vor der ersten Anwendung müssen die Startwerte der Zufallsgeneratoren initialisiert werden, wobei manche Generatoren Zugriffe auf mehrere zuvor bestimmte Werte verwenden. Die Wahl geeigneter Startwerte aus einer Startmenge kann ausschlaggebend für die Güte der erzeugten Zufallszahlen sein. Für ideale Generatoren sollte die Zahl der zulässigen Startwerte so groß sein wie die Periodenlänge.
Für die praktische Anwendung ist wichtig, dass die künstlich erzeugten, gleichverteilten Zufallszahlen den statistischen Kriterien „echter“ Zufallszahlen weitestgehend. So etwa Im Vergleich untereinander sollten sie, auch wenn man verschiedene Generatoren verwendet, für die Erwartungswerte dieselben Ergebnisse liefern. Statistische Prüfverfahren wie der -Test, Spektraltests und die strengen Tests von Marsaglia [8] in der Sammlung „Diehard Battery of Tests of Randomness“ („Diehard“-Tests) geben detaillierten Aufschluss über die Güte der Zufallszahlen. Für die Wahl des Generators ist nicht nur die statistische Güte ausschlaggebend, sondern auch seine Geschwindigkeit, so dass der Anwendungsfall entscheidet, welcher unter welchen Kompromissen eingesetzt wird. In den letzten Jahren ist das Thema Erzeugung von Zufallszahlen insbesondere durch die Entwicklung von Verschlüsselungsalgorithmen für kryptographischer Verfahren rasch vorangekommen und ist zunehmend hardwareorientiert. Die meisten Programmiersprachen besitzen Standardfunktion zur Erzeugung von Zufallszahlen Jedoch sind diese nicht standardisiert, kaum dokumentiert und genügen oft nicht den Erfordernissen, weshalb man diese auch nicht verwenden sollte. Viele der älteren Generatoren bestehen nicht mehr den heutigen Ansprüchen und modernen Testverfahren.
Hierzu gehört auch der früher häufig eingesetzte Zufallsgeneratoren nach der lineare Kongruenz- bzw. die Modulo- oder Reste-Methode (engl. linear congruential generator, Abk. LCG) zur Erzeugung gleichverteilter Zufallszahlen mit Ganzzahlarithmetik, welcher nach der iterativen Vorschrift (Iterationsschritte ) arbeitet. Ein Spezialfall hiervon ist der multiplikative Linear-Kongruenz-Generator (MLCG) mit , d. h. und eine Verallgemeinerung von diesem mit der Rekursionstiefe ist Hierbei liefert die Modulo-Operation den Rest nach der Division durch . Die Zahlen wiederholen sich beginnend mit einem Startwert spätestens nach Iterationen. Benötigt man viele Zufallszahlen muss die Periodenlänge für das Wiederholen der Zahlenwerte und damit hinreichend groß. Zusätzlich werden an die Konstanten und weitere Forderungen gestellt (z. B. müssen und teilerfremd sein), um zum einen möglichst großen Wiederholungszyklus zu erhalten und, um die geforderte Güte der Zufallszahlen zu erfüllen. So sollten nach [7] und keinen gemeinsamen Teiler besitzen, für jeden Primfaktor von und , falls ein Vielfaches von 4 ist. Den Startwert kann man bei der Initialisierung vorgeben oder man verwendet den vom System initialisierten Standardwert. Da alle Werte in (\ref{eq:URE:Zufallszahlen:LCG}↓) im Idealfall irgendwann im Verlaufe der Iteration angenommen werden, sind alle Startwerte gleich berechtigt.
Besonders einfach lassen sich Zufallsgeneratoren in Binärarithmetik realisieren, wenn eine Zweierpotenz ist. In diesem Falle kann man die Modulo-Operation durch eine binäre AND-Operation mit der Bitmaske ersetzen. Ein solcher ist der Generator mit den Konstanten [3], bei dem vorteilhafterweise die Multiplikation von mit 513 durch eine Linksverschiebung von um 9 Binärstellen und anschließender Addition von realisiert werden kann. Jedoch haben Zufallsgeneratoren mit Zweierpotenzen für eine Schwachstelle; ihre niederwertigen Bits sind weniger zufällig. Dennoch werden in [13] für 64-Bit-Ganzzahlen mit aufgrund ihrer guten spektralen Eigenschaften und trotz nicht so guter statistischer Eigenschaften die in der Tabelle 1↓ angegebenen Werte empfohlen. Hiervon sind aber nur die 32 höherwertigen Bits für die Verwendung als Zufallszahl zugelassen.
Generator-Bezeichnung
C1 3935559000370003845 2691343689449507681
C2 3202034522624059733 4354685564936845319
C3 2862933555777941757 7046029254386353087
Tabelle1 Koeffizienten für den LCG für nach [13], S. 348
Bessere Ergebnisse erhält man, wenn als Primzahl gewählt wird. Dann benötigt man zur schnellen Ausführung der Multiplikation Register mit doppelten Breite. Derartige Parameter erfüllen auch die „Diehard“-Tests. In [13] werden die in der Tabelle 2↓ von P. L´ Ecuyer berechneten Parameter eines MLCG angegeben. Als Startwert kann jede 64-Bit-Ganzzahl genommen werden. Für die Nutzung als Zufallszahlen dienen die 32 niederwertigen Bits. In manchen Fällen sind auch noch mehr Bits brauchbar.
Generator-Bezeichnung
E1 10014146
E2 30508823
E3 25708129
E4 5183781
E5 1070739
E6 6639568
E7 1781978
E8 2114307
E9 1542852
E10 2096259
E11 2052163
E12 2006881
Tabelle2 Parameter für den LCG mit Primzahlen nach [13], S. 349
Lineare rückgekoppelte Schieberegister (engl. linear feedback shift register, Abk. LFSR) [4] können ebenfalls zur Erzeugung von Zufallszahlen genutzt werden. Sie finden außerdem eine breite Anwendung in elektronischen Schaltungen, z. B. als Rauschgeneratoren, lassen sich aber auch leicht durch übliche Bitoperationen auf herkömmlichen Rechnern realisieren. Ein Schieberegister der Länge ist ein Bitspeicher bestehend aus Einzelbitspeichern (Flip-Flops), an dessen Ausgang die Bitzustände mit sequentiell ausgelesen und an dessen Eingang die Werte bitweise eingelesen werden können, wobei die Bitzustände (taktweise mit ) vom Eingang zum Ausgang durchgeschoben werden. Über eine Rückkopplung werden der Ausgang und einzelne Elemente des Schieberegisters linear Modulo 2 verknüpft (über eine Exklusiv-Oder-Operation) dem Eingang zugeführt, wobei die Auswahl der Elemente über die Koeffizienten erfolgt. Die iterative Vorschrift lässt sich zusammenfassend durch bzw. mittels der Matrix als lineare Transformation darstellen. Die maximalen Periodenlänge beträgt und es ist leicht einzusehen, dass als Initialisierung nicht alle Bitzustände den Wert 0 besitzen dürfen. Bei ungeeigneter Wahl der Koeffizienten können jedoch kürzere Teilzyklen entstehen, die den Einsatz als Zufallsgenerator unbrauchbar machen. Der Abbildungsvorschrift (\ref{eq:URE:Zufallszahlen:LFSR}↓) lässt sich das charakterisierende Polynom zuordnen, wobei die Indizes der von Null verschiedenen Koeffizienten dieses Polynom eindeutig beschreiben. Kann ein solches Polynom wieder in Polynome faktorisieren werden, d. h. ist es reduzibel, dann treten Teilzyklen auf. Die Forderung besteht demnach darin, irreduzible Darstellungen zu finden. Dies ist aber sehr aufwendig und für bestimmte Längen gibt es oft mehrere Lösungen. Die Irreduzibilität ist jedoch keine Garantie für einen guten Zufallsgenerator, sondern nur eine Notwendigkeit.
Andere Zufallsgeneratoren arbeiten wie der zeitlich-verzögerte Fibonacci [B]  [B] genannt nach Leonardo da Pisa, Sohn des Guglielmo Bonacci („figlio di Bonaccio“)-Generator (engl.: lagged Fibonacci generator, Abk. LFG), kurz Fibonacci-Generator, mit Tabellen auf die mit einem gewissen Indexversatz zugegriffen wird, wobei die enthaltenen Werte mit binären Operationen (Addition, Subtraktion, Multiplikation, bitweises Exklusiv-Oder) nach der Vorschrift verknüpft werden. Diese erfolgt in Analogie zur Erzeugung der Fibonacci-Zahlenfolge ( , , Operation; „ “ ohne Modulo-Operator) nach der Rekursionsvorschrift für und den Startwerten und als Modell für die Populationsentwicklung. Aufgrund der einfachen Vorschrift für die Verknüpfung der Operanden sind Fibonacci-Generatoren sehr schnell. Mindestens einer der Verzögerungen oder sollte ungerade sein. Eine mögliche Wahl ist und , womit die Tabelle entsprechend des größten Verzögerung eine Länge von 55 besitzen muss. Die Wertetabelle muss vor der ersten Anwendung des Generators mit geeigneten Werten initialisiert werden. Beispielsweise kann man hierzu den Generator Ranq1 (s. u.) verwenden. Nachteilig ist, dass die Qualität der Zufallsfolgen stark von dieser Initialisierung abhängen kann. Von Vorteil ist, dass man mit dem Fibonacci-Generator sehr schnell gleichverteilte Zufallszahlen direkt im doppelt genauen Gleitkommaformat mit 52-Bit-Mantisse unter Nutzung des IEEE 754-Standards erzeugen kann, d. h. ohne den üblichen Weg der Umwandlung einer Ganzzahl in das Gleitkommaformat, wenn als binäre Operation verwendet wird. Fibonacci-Generatoren lassen sich auch in parallelen Rechnersystemen anwenden [15].
Wenn man zudem einem Übertrag in der Addition berücksichtigt, so spricht man von Addition-mit-Übertrag-Generatoren (engl. add-with-carry generator, Abk. AWC). Man kann die entsprechende Iteration als Abbildung der Funktion durch oder für die komplementären Form als Abbildung darstellen. Die erste Variante besitzt mit der Primzahl und die zweite mit der Primzahl die Periodenlänge . Beide Periodenlängen sind wesentlich größer als beim klassischen Fibonacci-Generator. (Für z. B. wäre die Periodenlänge hierfür nur ungefähr , im Gegensatz zum Addition-mit-Übertrag-Generator mit einer Periodenlänge von mindestens ). Entsprechend kann man auch Subtraktion-mit-Borgen-Generatoren (engl. subtract-with-borrow generator, Abk. SWB) für Iterationen der Form durch die Abbildung bzw. für Iteration der Form durch die Abbildung einführen. Die erste Variante besitzt mit der Primzahl und die zweite mit der Primzahl die Periodenlänge . Die Verzögerungen und sollten so gewählt werden, dass je nach Variante eine Primzahl mit der Primitivwurzel ist. Die Suche nach geeigneten Parametern ( , , ) ist sehr zeitaufwendig [7].
Ein weiterer Generator mit großer Periodenlänge und guten statistischen Eigenschaften stammt von Marsaglia [9] und benutzt die Multiplikation mit Übertrag (engl.: Multiply with Carry, Abk. MWC) modulo einer Zahl , welche als Zweierpotenz entsprechend der Registerbreite der Prozessoren gewählt wird.
Die Iteration der Zufallszahlen mit um , , verzögerten Werten erfolgt durch Multiplikation mit und der Addition des Übertrages – beim Zufallsgenerator nach dem Kongruenzverfahren war dieser Term eine Konstante – nach der Vorschrift wobei der neue Übertrag durch den ganzzahligen Anteil nach der Division durch gemäß bestimmt wird. Die Wahl von , und erfolgt nach dem Kriterium, dass eine Primzahl ist. Im allgemeinen Fall werden sowohl Startwerte für den Übertrag und für die Reste aus einer Startmenge von -Tupeln benötigt, wobei und verboten sind. Die Transformation ist somit durch gegeben.
Falls sich als Zweierpotenz darstellt, dann kann die Division durch eine Rechtsverschiebeoperation oder bei Verwendung von Doppelregistern durch Kopieren des höherwertigen Wortes in das niederwertige Wort ersetzt werden. Insbesondere für 64-Bit-Ganzzahlen kann dies nach erfolgen, wobei die bitweisen Operationen UND (Symbol: „ “) zur Maskierung der niederwertigen Bits und die Rechtsverschiebung (Symbol „ “) um 32 Stellen zur Erzeugung des Übertrages Anwendung finden. Es sind jedoch nur die niederwertigen 32 Bit zur Erzeugung der Zufallszahlen nutzbar. Die erlaubten Startwerte liegen im Bereich . In [13] werden die in Tabelle 3↓ enthaltenen Werte empfohlen, die auch die „Diehard“-Tests bestehen. Das Beispiel von [9] unter Verwendung von Tabellenzugriffen, besteht in der Wahl , , . Zufallszahlenfolgen, welche mit gebildet werden, besitzen aber nicht die Periode sondern, falls für und auch ein Primzahl ist, die Periode
Generator-Bezeichnung
B1 4294957665
B2 4294963023
B3 4162943475
B4 3947008974
B5 3874257210
B6 2936881968
B7 2811536238
B8 2654432763
B9 1640531364
Tabelle3 Nach [13], S. 348, empfohlene Koeffizienten für die MWC-Methode
Dieser Makel lässt sich mit dem komplementären Multiplikation-mit-Übertrag-Verfahren (engl. Complimentary Multiply With Carry, Abk. CMWC) speziell für vermeiden, wonach die Zufallszahlen nach der Vorschrift und der Übertrag gemäß gebildet werden. Hierfür verwendet man als Kriterium, dass eine Primzahl ist. Die Periode der Zufallszahlensequenz beträgt .
Weitere sehr schnelle und leicht zu implementierende Methoden zur Erzeugung von Zufallszahlen beinhalten Kombinationen aus den Standard-Computerarithmetik-Operationen XOR (Exklusiv-Oder: Symbol „ “ bzw. die Modulo-2-Addition) und bitweiser Verschiebung (SHIFT) nach links bzw. rechts (Linksverschiebung: Symbol „ “, Rechtsverschiebung: Symbol „ “) um eine gewisse Anzahl von Positionen, so die XOR-SHIFT-Zufallsgeneratoren von Marsaglia [9] (engl. „xorshift RNG“, Abk. XSRNG) in 32-Bit-Abstufung mit einer Periode für usw., welche die XOR-Operation auf eine entsprechende Ganzzahl und deren bitverschobene Kopie anwenden. Hierzu gehört insbesondere die 64-Bit-Xorshift-Methode mit den Befehlssequenzen bzw. für die 64-Bit-Ganzzahlen und Iterationsschritten sowie Startwerten . Diese Operationen lassen sich in den 64-Bit-Registern moderner Prozessoren sehr schnell ausführen. Die Sequenzen von XOR-SHIFT-Operationen sind Spezialfälle, die aus der Zerlegung einer allgemeinerem binären -Transformationsmatrix in nichtsinguläre Matrizen ( ) bzw. ( ) mit entstehen, wobei die Einheitsmatrix, bzw. die Matrixdarstellungen des Links- bzw. Rechtsverschiebungsoperators sind. Die Periode ist durch gegeben. Für das Tripel der Positionsverschiebungen müssen geeignete positive ganzzahlige Werte gewählt werden. Nach [13] sind die Tripel in der Top-Liste (4↓), gekennzeichnet durch die Generator-Bezeichnung, für beide Varianten (\ref{eq:URE:Zufallszahlen:Marsaglia:right}↓) und (\ref{eq:URE:Zufallszahlen:Marsaglia:left}↓) gute Kandidaten. Sie wurden aus einer viel größeren Möglichkeitsmenge ausgewählt und bestehen die „Diehard“-Tests.
Generator-Bezeichnung
A1 21 35 4
A2 20 41 5
A3 17 31 8
A4 11 29 14
A5 14 29 11
A6 30 35 13
A7 21 37 4
A8 21 43 4
A9 23 41 18
Tabelle4 Mögliche Tripel nach [13], S. 347, für die 64-Bit-Xorshift-Methode von Marsaglia
Die XOR-SHIFT-Methode nach Marsaglia ist mit gewissen Typen linear rückgekoppelter Schieberegister verwandt.
Die Erzeugungsmechanismen lassen sich koppeln und man erhält in günstigen Fällen weitere Verbesserungen, wenn man die Bits mit den besten Eigenschaften aus mehreren Generatoren in einer neuen Kombination verwendet, wofür in [13] einige Rezepte angegeben werden. So wird als eine mögliche Kombination die Hintereinanderausführung der Generatoren C1 und A6 erwähnt, die einen neuen Generator ergeben. Besonders empfohlen wird in [13] der Generator mit der Bezeichnung Ran, welcher nach der Kompositionsregel aus den 4 Generatoren mit den Bezeichnungen A1, C3, A3, B1 gebildet wird. Die Indizes und an den Generatoren nach dem Marsaglia-Verfahren A1 bzw. A3 kennzeichnen, ob als erste Schiebeoperation eine Links- oder eine Rechtsverschiebung erfolgt. Intern werden die Zustände der unabhängigen Generatoren C3, A3, B1 nach jedem Schritt aktualisiert. Als einfache und schnelle Varianten werden die Generatoren mit dem Namen Ranq1 und Ranq2 empfohlen.
Der von Matsumoto und Nishimura entwickelte Mersenne-Twister (MT) ist ein schneller und hoch-qualitativer Generator zur Erzeugung von Zufallszahlen und hat eine matrixbasierte lineare Rekurrenz über dem binären Feld zur Grundlage. Seine Periodenlänge wird durch die namensgebende Mersenne-Primzahl festgelegt. Verbreitetet sind die 32-Bit-Version MT19937 und die 64-Bit Version MT19937-64 mit einer Periode von . Er besitzt auch in höheren Dimensionen gute Gleichverteilungseigenschaften und gute Unkorreliertheit verschobener Sequenzen und besteht die „Diehard“-Tests. Wegen der Prognostizierbarkeit der Sequenz ist er eher für Monte-Carlo-Simulationen geeignet, als für kryptographische Zwecke. Der SIMD [C]  [C] SIMD: Single Instruction Multiple Data-orientierte Mersenne-Twister (SFMT) ist eine Weiterentwicklung und speziell für 128-Bit-SIMD-Operationen konzipiert und nutzt die Möglichkeiten moderner CPUs . Für diese Architekturen ist er schneller als der ursprüngliche Mersenne-Twister.
Sowohl für die bitorientierte Implementierung in spezieller Hardware wie den FPGA (Abk. für Field-Programmable Gate Array) [19] oder in (massiv) parallelen Computerarchitekturen allgemein, als auch zur Implementierung als Software existieren Entwicklungen von Zufallsgeneratoren auf der Basis zellulärer Automaten (s. u.). Die Zellen, die man sich als Register zum Speichern von Zustandswerten vorstellen kann, sind in einer bestimmten Geometrie angeordnet, z. B. als lineare Kette oder in einem quadratischen Gitter. Die Gesamtheit der Zellen des zellulären Automaten bilden somit ein riesiges Zustandsfeld bzw. Register, wobei FPGA architektonisch im Wesentlichen einer solchen zweidimensionalen Anordnung entsprechen. Zufallsgeneratoren als zelluläre Automaten besitzen, wenn auch nur in Spezialfällen, eine gewisse Verwandtschaft mit den Zufallsgeneratoren basierend auf linearen rückgekoppelten Schieberegistern. Sie sind diesen aber in der Qualität überlegen. Die Zustandsüberführung einer Zelle erfolgt nach vorgegebenen Regeln in Abhängigkeit des Zustandes dieser Zelle und der Zustände in einer Nachbarschaft für alle Zellen zeitlich synchron, d. h. parallel, und kann über Look-Up-Tabellen erfolgen. Eine solche Regel für -wertige Zustände und einem Nachbarschaftsradius kann beispielsweise durch die iterative Abbildung für die aufeinanderfolgenden Zeitpunkte und beschrieben werden. Wegen der zumeist lokalen Nachbarschaft kann die Zustandsaktualisierung und damit die Erzeugung der Zustandszahlen sehr schnell erfolgen.
Entsprechend der Klassifikation nach Wolfram kann die Evolution einer bestimmten Startkonfiguration bzw. eines Musters in eine fixierte Konfiguration (1) münden, es können einfache periodische Strukturen (2) erscheinen, aber auch aperiodische (z. B. selbstähnliche bzw. fraktale) und als chaotische erscheinende Strukturen (3) können auftreten. Außerdem sind komplizierte, lokalisierte Strukturen (4) möglich. Für potenzielle Zufallsgeneratoren ist nur der 3. Fall mit zumeist nichtlinearen Regeln von Bedeutung und die hiermit aufgrund der Kompliziertheit verbundene praktische Unvorhersagbarkeit ist wesentlich für die Eignung.
Ein solcher einfacher, eindimensionaler zellulärer Zufallsautomat nach Wolfram [16] bestehend aus Zellen mit Zuständen aus der Zustandsmenge der Binärzahlen 0 oder 1, d. h. für , besitzt die Regel („Regel 30“) für die Zustandsüberführung, wobei der neue Zustand zum Zeitpunkt in der Zelle in Abhängigkeit der Zustände der nächsten Nachbarn und mit Hilfe der logischen Operationen (Exklusives Oder) und (Oder) gebildet wird. Diese Regel (\ref{eq:URE:Zufallszahlen:ZA:Wolfram2}↓) ist äquivalent mit der nichtlinearen numerischen Vorschrift in Modulo-2-Arithmetik. Der Zahlencode 30 für die „Regel 30“ berechnet sich als Dezimalwert aus den Wahrheitswerten für alle Kombinationen der Eingangswerte:
„Regel 30“ nach (\ref{eq:URE:Zufallszahlen:ZA:Wolfram2}↓) bzw. (\ref{eq:URE:Zufallszahlen:ZA:Wolfram3}↓)
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 0
Dez. Zahlencode: 30
Tabelle5 Berechnung des Zahlencodes für „Regel 30“
Es werden periodische Randbedingungen angenommen, so dass man sich den zellulären Zufallsautomaten auch als zirkuläres Register, z. B. bestehend aus einem oder mehreren Computerregistern, vorstellen kann. Die Anfangskonfiguration mit dem Zustandswert 0 in allen Zellen muss wegen der trivialen Periodenlänge 1 ausgeschlossen werden. In einem solchen Zufallsgenerator treten die möglichen Bitsequenzen mit gleicher Wahrscheinlichkeit auf. Von Wolfram wurde zwischen der maximalen Periodenlänge in Abhängigkeit von der Zellenzahl die näherungsweise, empirische Beziehung für periodische Randbedingungen gefunden und ist vergleichsweise klein gegenüber der Länge beim LFSR . Die Zufallssequenz lässt sich aus dem Zustand einer Zelle, etwa dem mit Index 0, nach jedem oder jeweils nach einer größeren Schrittzahl auslesen. Die Bildungsvorschrift (\ref{eq:URE:Zufallszahlen:ZA:Wolfram2}↓) ist ein einfaches Beispiel mit guten statistischen Eigenschaften. Noch allgemeiner können auch Abhängigkeiten von Zuständen weiter zurückliegender Zeitpunkte, etwa durch berücksichtigt werden, wobei dann entsprechend der Standardform (\ref{eq:URE:Zufallszahlen:ZA:Wolfram1}↓) effektiv Transformationen mit größeren Zustandszahlen beschrieben werden. Jedoch ist es hierfür schwierig, geeignete Kandidaten für Zufallsgeneratoren zu finden.
Zelluläre Automaten basierte Zufallsgeneratoren wie die „Regel 30“ lassen sich auch in feingranulierten parallelen Computersystemen, insbesondere in zellulären Automaten einsetzen. Da jedoch zwischen benachbarten Zellen für eine kurze Zeit eine gewissen Korrelation der Zufallswerte existiert, muss man einen bestimmten Zeitabstand zwischen dem Auslesen der Zufallswerte verstreichen lassen oder man fügt Zellen zwischen diesen ein, so dass das Auslesen mit jedem Zeittakt erfolgen kann. Gibt man die Gleichartigkeit der Regeln für alle Zellen auf, so kann man durch Kombinationen von (auch linearen) Regeln gleich gute wie die „Regel 30“ oder bessere Zufallsgeneratoren konstruieren. Ein solche Kombination aus zwei Regeln sind die „Regel 90“ (Code 0) und die „Regel 150“ (Code 1) nach der Klassifikation von Wolfram, die ihrerseits keine guten Zufallsgeneratoren sind. Durch bestimmte Kombinationen (Sequenzfolgen der Regeln, z. B. mit der Gesamtlänge ) kann man maximale Zyklenlängen erreichen, die denen der LFSR gleichen und man kommt mit festen Randbedingungen aus Werten von 0 aus. Diese spezielle Regelkombination zeigt aber Probleme in der Gleichverteilung der Nullen und Einsen, wobei mal die Nullen überwiegen können und im darauf folgenden Schritt die Einsen, die man aber wieder durch Einfügen von Zellen überwinden kann. Zudem treten noch unerwünschte Symmetrien auf.[17, 18]
 Einleitung Oben Hauptseite Zufallszahlen mit Exponentialverteilung