Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. WeltenzyklopÀdie
  2. Zufallszahlengenerator
Zufallszahlengenerator 👆 Click Here!
aus Wikipedia, der freien EnzyklopÀdie
(Weitergeleitet von Zufallsgenerator)

Als Zufallszahlengenerator, kurz Zufallsgenerator, bezeichnet man ein Verfahren, das eine Folge von Zufallszahlen erzeugt. Der Bereich, aus dem die Zufallszahlen erzeugt werden, hÀngt dabei vom speziellen Zufallszahlengenerator ab.

Man unterscheidet grundsÀtzlich zwischen nicht-deterministischen und deterministischen Zufallszahlengeneratoren. Nicht-deterministisch ist ein Zufallszahlengenerator, wenn er auch bei gleichen Ausgangsbedingungen unterschiedliche Werte liefert. Da die Implementierung einer Software-Prozedur in der Regel deterministisch arbeitet, muss zur Realisierung eines nicht-deterministischen Zufallszahlengenerators ein externer (beispielsweise physikalischer) Vorgang einbezogen werden. Ein deterministischer Zufallszahlengenerator liefert bei gleichen Ausgangsbedingungen dagegen immer die gleiche Folge von Zahlen. Oft werden beide Formen zu einem hybriden Generator kombiniert.

Zufallszahlen werden unter anderem bei verschiedenen Methoden der Statistik benötigt, z. B. bei der Auswahl einer Stichprobe aus einer Grundgesamtheit, bei der Verteilung von Versuchstieren auf verschiedene Versuchsgruppen (Randomisierung) oder bei der Monte-Carlo-Simulation. Typische weitere Anwendungsgebiete sind (Computer-, GlĂŒcks-)spiele und diverse Kryptographieverfahren.

Nichtdeterministische Zufallszahlengeneratoren

[Bearbeiten | Quelltext bearbeiten]

Physikalischer Zufallszahlengenerator

[Bearbeiten | Quelltext bearbeiten]

Ein physikalischer Zufallszahlengenerator dient der Erzeugung von Zufallszahlen und benutzt dafĂŒr physikalische Prozesse.

Hierbei werden beispielsweise Impuls­schwankungen elektronischer Schaltungen (z. B. thermisches Rauschen eines Widerstands) oder radioaktive ZerfallsvorgĂ€nge ausgenutzt. Generell können alle natĂŒrlichen Quellen verwendet werden, die auf physikalischen Effekten basieren und eine recht hohe GĂŒte liefern, aber auch andere asynchrone Quellen, wie z. B.:

  • AtmosphĂ€renrauschen (wie analoges Radio, das nicht auf einen Sender abgestimmt ist);
  • CCD-Sensorrauschen (mit einer schlechten (z. B. alten Mobiltelefon-) Kamera in einem dunklen Raum fotografieren und daraus Zufallszahlen ableiten);
  • radioaktiver Zerfall;
  • Schwankung der tatsĂ€chlichen Zeitdauer einer mit einem Zeitgeber („Timer“) gemessenen Zeitdauer;[1]
  • Spannungsschwankungen an einer Z-Diode;
  • Lawinenrauschen an einer pn-Diode.

Allerdings gelten physikalische Zufallszahlengeneratoren nicht als schnell, da eine UnabhĂ€ngigkeit und Gleichverteilung der erzeugten Zufallszahlen nur durch hinreichend große AbstĂ€nde bei der Beobachtung der physikalischen Prozesse bzw. Abfangverfahren erreicht werden können. Dies ist aber nur eine Frage der verwendeten Technik, denn Zufallsprozesse wie thermisches Rauschen haben Grenzfrequenzen von vielen Terahertz.

Auch ist eine Reproduzierbarkeit der Ergebnisse prinzipiell nicht möglich, da die produzierten Zufallszahlen unvorhersagbar zufĂ€llig sind (so wie die Lotto­zahlen). Dadurch sind die produzierten Zufallszahlen aperiodisch, d. h. die sich nicht wiederholende Folge der Zufallszahlen ist (prinzipiell, d. h. wenn der Generator lange genug lĂ€uft) unendlich.

Beispielsweise kann ein GeigerzĂ€hler die Zahl der radioaktiven ZerfĂ€lle in einer bestimmten Zeitspanne messen. Man nutzt die Tatsache, dass ein radioaktives Nuklid nach einer zufĂ€lligen Zeit in sein Tochternuklid zerfĂ€llt. Die Zeitspanne hat aber beim gleichen Nuklid immer den gleichen Mittelwert (die sogenannte mittlere Lebensdauer, die mit der Halbwertszeit ĂŒber den Faktor 1 l n ( 2 ) {\textstyle {\frac {1}{ln(2)}}} {\textstyle {\frac {1}{ln(2)}}} zusammenhĂ€ngt.[2]) Da der radioaktive Zerfall immer unabhĂ€ngig von Umgebungsbedingungen ablĂ€uft, kann dieser Vorgang Zufallszahlen hoher GĂŒte liefern.

Daneben können auch Rauschgeneratoren als Zufallsgeneratoren verwendet werden.[3]

Eine Methode zum Aufbau von Zufallsgeneratoren in digitalen Schaltungen besteht in der Ausnutzung der MetastabilitÀt bei taktflankengesteuerten Flipflops.[4]

Gute physikalische Verfahren zur Generierung von Zufallszahlen sind auch das WĂŒrfeln und die Ziehung von Lottozahlen mit den dafĂŒr typischen Maschinen. Zufallsziehungen in relativ schneller Abfolge wurden bei elektromechanischen GlĂŒcksspielautomaten realisiert, und zwar auf Basis von Nockenscheiben mit ExzenterrrĂ€dchen und einem Schaltzeitvariator.[5]

Bei physikalischen Zufallszahlengeneratoren besteht jedoch das Problem der Alterung. Beispielsweise haben Geiger-MĂŒller-ZĂ€hlrohre eine Lebensdauer von typischerweise einer Billion Pulse und sind zudem abhĂ€ngig von Temperatur, Magnetfeldern und der Versorgungsspannung. Zudem muss bei GeigerzĂ€hlern die Pulsrate „deutlich höher“ als die Taktfrequenz sein, mit der die Pulse eingelesen werden. Eine Lösung dieses Problems besteht in der Verwendung vieler (mehr oder weniger guter) Zufallszahlengeneratoren, wobei von den erzeugten Zufallszahlen nur das letzte Bit verwendet wird, um damit die Modulo-Zwei-Summe zu bilden. Nach dem zentralen Grenzwertsatz der Statistik erhĂ€lt man damit auch mit schlechten Zufallszahlengeneratoren zufĂ€llige Zufallsbits (sofern genĂŒgend viele Zufallszahlengeneratoren verwendet werden).

Eine der einfachsten Möglichkeiten, zufĂ€llige Sequenzen zu erzeugen, verwendet Lawinenrauschen in einem umgekehrt vorgespannten Übergang. Wenn eine Diode in Sperrrichtung vorgespannt ist, fließt tatsĂ€chlich nur ein sehr geringer Strom, und in erster NĂ€herung kann die Diode als offener Stromkreis betrachtet werden. Wenn die Sperrspannung jedoch erhöht wird, wird ein Punkt erreicht, an dem der Strom dramatisch ansteigt. Dieser schnelle Anstieg des Stroms unter Sperrspannung kennzeichnet den Durchbruch, und die entsprechende angelegte Spannung wird als Durchbruchspannung bezeichnet. Es gibt zwei Mechanismen, die einen Zusammenbruch verursachen können, nĂ€mlich die Lawinenvervielfachung und das quantenmechanische Tunneln von LadungstrĂ€gern durch die BandlĂŒcke.

Die durch den großen Durchbruchstrom und die hohe Durchbruchspannung verursachte ErwĂ€rmung fĂŒhrt jedoch dazu, dass die Diode zerstört wird, wenn keine ausreichende WĂ€rmeableitung bereitgestellt wird. Lawinenrauschen ist das Rauschen, das erzeugt wird, wenn eine pn-Diode zu Beginn des Lawinendurchbruchs betrieben wird. Es tritt auf, wenn LadungstrĂ€ger unter dem Einfluss des starken elektrischen Feldes genĂŒgend kinetische Energie erhalten, um durch Kollision mit den Atomen im Kristallgitter zusĂ€tzliche Elektron-Loch-Paare zu erzeugen. Wenn dieser Prozess in einen Lawineneffekt ĂŒbergeht, können zufĂ€llige Rauschspitzen beobachtet werden. Um ein solches Rauschen zu erzeugen, kann man den Basis-Emitter-Übergang eines Kleinsignal-Transistors verwenden, da dieser Übergang fĂŒr viele gĂ€ngige GerĂ€te eine relativ niedrige Durchbruchspannung hat. Die Menge an erzeugtem Rauschen hĂ€ngt von den physikalischen Eigenschaften des Übergangs ab, wie zum Beispiel den verwendeten Materialien und dem Dotierungsniveau.[6]

Letztlich bieten auch noch so sorgfĂ€ltig aufgebaute physikalische Zufallszahlengenerator keine GewĂ€hr fĂŒr ideale Zufallsfolgen. Der amerikanische Mathematiker und Informatiker George Marsaglia (1924–2011), der sich mehrere Jahrzehnte lang intensiv mit dieser Thematik befasst hat, und unter anderem eine Testsuite namens Diehard zur PrĂŒfung der „ZufĂ€lligkeit“ von Zahlenfolgen entwickelte (siehe Weblinks), gab die explizite Empfehlung, zur Erzeugung von „guten“ Zufallsfolgen am besten mehrere â€“ möglichst unterschiedliche â€“ Verfahren zu benutzen, und zwar sowohl physikalische als auch deterministische, und deren Ergebnisse anschließend mithilfe eines Mischers miteinander zu kombinieren (siehe auch: Hybride Generatoren).[7]

QuasizufÀllige Ereignisse

[Bearbeiten | Quelltext bearbeiten]

Es wird beispielsweise die Systemzeit bestimmt, innerhalb der eine Benutzer­aktion eintritt. Auf diese Weise erzeugte Zufallszahlen haben meist eine geringe GĂŒte, lassen sich aber als Startwert fĂŒr deterministische Verfahren verwenden.

Deterministische Zufallszahlengeneratoren

[Bearbeiten | Quelltext bearbeiten]

Deterministische Zufallszahlengeneratoren erzeugen Pseudozufalls­zahlen und werden daher auch Pseudo­zufalls­zahlen­generatoren genannt (engl. pseudo random number generator, PRNG). Sie erzeugen eine Zahlenfolge, die zwar zufĂ€llig aussieht, es aber nicht ist, da sie durch einen deterministischen Algorithmus berechnet wird. Solche Pseudo­zufalls­zahlen sind von Computern wesentlich einfacher zu erzeugen, und entsprechende Generatoren sind in der Laufzeitbibliothek von praktisch allen höheren Programmier­sprachen verfĂŒgbar.

Bei jedem Start der Berechnung mit gleichem Startwert (engl. seed; Saat oder Saatkorn) wird die gleiche Folge erzeugt, weshalb diese spĂ€ter reproduziert werden kann, wenn Startwert und Algorithmus dokumentiert sind. Diese Eigenschaft der Reproduzierbarkeit ist bedeutsam fĂŒr die Anerkennung wissenschaftlicher Experimente.

GĂŒte eines Zufallszahlengenerators

[Bearbeiten | Quelltext bearbeiten]

Die erzeugten Zahlen können durch statistische Tests geprĂŒft werden. Dazu gehört die erzeugte Verteilung (z. B. Normalverteilung, Gleichverteilung, Exponentialverteilung etc.) oder die UnabhĂ€ngigkeit aufeinanderfolgender Zahlen. Wie gut die erzeugten Zahlen den statistischen Vorgaben entsprechen, bestimmt die GĂŒte eines Zufalls­zahlen­generators.

Am Beispiel eines Zufallszahlengenerators, der nur die Zahlen 0 und 1 ausgeben kann (z. B. simulierter MĂŒnzwurf), kann man sich klarmachen, dass allein die gleiche HĂ€ufigkeit beider Ergebnisse nicht ausreicht, da etwa die Folge 0, 1, 0, 1, 0, 1, 0, 1, â€Š bereits intuitiv als nicht zufĂ€llig erkennbar ist. Es sollten im optimalen Fall auch alle möglichen Paare aufeinander folgender Ergebnisse mit den erwarteten HĂ€ufigkeiten auftreten, und ebenso auch Tripel, Quadrupel usw. Diese Überlegungen fĂŒhren auf den Spektraltest.

Ein sehr einfaches GĂŒtekriterium ist die PeriodenlĂ€nge, die ausreichend lang sein sollte, damit sie bei der Anwendung des PRNG nicht vollstĂ€ndig durchlaufen wird, sich die erzeugten Zahlen also nicht wiederholen. Der Mersenne-Twister hat z. B. eine besonders große PeriodenlĂ€nge. Ein PRNG wiederholt sich zwangslĂ€ufig, sobald ein bestimmter interner Zustand wiederholt auftritt. Die PeriodenlĂ€nge kann also höchstens so groß sein wie die Zahl der möglichen ZustĂ€nde. Wenn etwa der Zustand in einem Datenwort von 64 Bit gespeichert wird, betrĂ€gt sie höchstens 2 64 {\displaystyle 2^{64}} {\displaystyle 2^{64}}. Dies betrifft insbesondere den linearen Kongruenzgenerator. FĂŒr diesen werden daher in der Regel die Parameter so gewĂ€hlt, dass diese maximale PeriodenlĂ€nge auch realisiert wird, was durch ein einfaches Kriterium geprĂŒft werden kann (Satz von Knuth).

Knuth listet noch zahlreiche andere Tests, so den „serial test“, den LĂŒcken-Test, den Poker-Test, den Couponsammler-Test, den Permutations-Test, den Lauf-Test, den Maximum-aus- t {\displaystyle t} {\displaystyle t}-Test und den Kollisions-Test auf. Die Übereinstimmung der Ergebnisse mit der Erwartung fĂŒr einen einwandfreien Generator wird dabei durch den Chi-Quadrat-Test bzw. den Kolmogorow-Smirnow-Test geprĂŒft. Es kommt vor, dass ein Generator bei einigen Tests sehr gut abschneidet, aber bei anderen versagt. FĂŒr einige Anwendungen wie Simulationen, die den entsprechenden Testbedingungen nahe sind, ist ein solcher Generator dann ungeeignet.[8]

Besonders strenge Anforderungen werden an kryptographisch sichere Zufalls­zahlen­generatoren gestellt.

Nicht-periodischer/unendlicher Generator

[Bearbeiten | Quelltext bearbeiten]

Man betrachte die Nachkommastellen der Quadratwurzel einer natĂŒrlichen Zahl als Zufallszahlen (hierbei ist darauf zu achten, dass die resultierende Wurzel eine irrationale Zahl ist). Klassischerweise kann man statt n {\displaystyle {\sqrt {n}}} {\displaystyle {\sqrt {n}}} auch die Kreiszahl π {\displaystyle \pi } {\displaystyle \pi } verwenden. Zwar ist hierbei garantiert, dass die erzeugte Zahlenfolge nicht periodisch ist; jedoch ist bei diesen Beispielen noch nicht einmal bekannt, ob sie gleichverteilt ist (von weitergehenden statistischen Tests ganz zu schweigen; siehe Normale Zahl).

Realisierung in Software

[Bearbeiten | Quelltext bearbeiten]
  • Arithmetische Zufallszahlengeneratoren basieren auf der Arithmetik. Irrationale Zahlen wie 2 {\displaystyle {\sqrt {2}}} {\displaystyle {\sqrt {2}}} oder e {\displaystyle e} {\displaystyle e} können als Zufalls­zahlen­generatoren verwendet werden, indem man den gebrochenen Teil beliebiger Vielfache als Zufallszahlen nutzt. Nachteil des Verfahrens ist, dass sich irrationale Zahlen nur als NĂ€herungs­werte innerhalb der Rechen­genauigkeit darstellen lassen.
  • Rekursiver arithmetischer Zufallszahlengenerator: Diese Verfahren beruhen auf der Berechnung einer neuen Zufallszahl aus einer oder mehreren vorhergehenden Zahlen. Die neu erzeugte Zahl wird gespeichert und geht bei erneutem Aufruf des Zufalls­zahlen­generators in die Berechnung ein. Beim allerersten Aufruf des Zufalls­zahlen­generators muss ein willkĂŒrlich gewĂ€hlter Startwert (oder mehrere), die Saat (meist engl. seed), verwendet werden.
    • Kongruenzgenerator
      • linearer Kongruenzgenerator
        • multiplikativer Kongruenzgenerator
        • gemischter linearer Kongruenzgenerator
      • Fibonacci-Generator
    • Inverser Kongruenzgenerator
    • Mersenne-Twister
    • Multiply-with-carry
    • Well Equidistributed Long-period Linear
    • Xorshift
    • Block- oder Stromchiffren, kryptologische Hashfunktionen

Programmierung

[Bearbeiten | Quelltext bearbeiten]

In der Programmiersprache C++ können Pseudozufallszahlen auf einfache Weise mit der Funktion rand() der Standard­bibliothek generiert werden.[9][10]

Einen PRNG kann man sich auch recht einfach selbst programmieren. Der folgende Programmcode zeigt die Implementierung eines linearen Kongruenzgenerators mit der PeriodenlĂ€nge 2 64 {\displaystyle 2^{64}} {\displaystyle 2^{64}}, der je Aufruf eine 32-Bit-Ganzzahl liefert. Er erzeugt recht hochwertige Zufallszahlen und ist fĂŒr fast alle Anwendungen geeignet, die keine kryptografische Sicherheit erfordern.

#include <stdint.h>
class Rand {
   uint64_t r;
 public:
   Rand() : r(1) {}
   void init(uint64_t seed) {
      r = seed;
      get();
   }
   unsigned get() {
      r = 6364136223846793005 * r + 3;
      return r >> 32;
   }
};

Realisierung in Hardware

[Bearbeiten | Quelltext bearbeiten]
  • Schieberegister mit RĂŒckkopplung
    • lineares Schieberegister
    • nichtlineares Schieberegister

Hybride Generatoren

[Bearbeiten | Quelltext bearbeiten]

In der Praxis verwendet man hĂ€ufig arithmetische Zufalls­zahlen­generatoren, die eine Mischform sind. Sie berechnen Pseudozufallszahlen, verwenden dafĂŒr allerdings – bei Bedarf – einen möglichst zufĂ€lligen Startwert. Die Entropie der generierten Zufallszahl kann jedoch nicht grĂ¶ĂŸer sein als die des Startwerts.

In der Praxis findet man solche hybriden Zufalls­zahlen­generatoren unter unixoiden Betriebssystemen wie Linux oder BSD unter /dev/random und /dev/urandom. Diese zeigen praktisch keinerlei statistische AuffĂ€lligkeiten. Ihre Initialisierung erfolgt in den meisten FĂ€llen jedoch nicht mit den beschriebenen Methoden, sondern durch Auswertung des zeitlichen Abstandes von Hardware­ereignissen (Tastatureingaben, Netzwerkverkehr und Ähnliches), die ebenfalls als zufĂ€llig erachtet werden können.

Im einfachsten Fall wird ein Pseudo­zufalls­zahlen­generator gewÀhlt, der gelegentlich mit einer neuen Zufallszahl als Startwert neu gestartet wird.

Siehe auch

[Bearbeiten | Quelltext bearbeiten]
  • Liste von Zufallszahlengeneratoren
  • Kryptographisch sicherer Zufallszahlengenerator

Weblinks

[Bearbeiten | Quelltext bearbeiten]
Wiktionary: Zufallszahlengenerator â€“ BedeutungserklĂ€rungen, Wortherkunft, Synonyme, Übersetzungen
  • Online Zufallszahlengenerator (engl.: RANDOM.ORG offers true random numbers on the internet)
  • Diehard.zip. Diehard Battery von 1995 als ZIP-Datei (600 kB, englisch) zur Erzeugung und PrĂŒfung von Zufallszahlen.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ timer entropy daemon
  2. ↑ D. Meschede (Hrsg.): Gerthsen Physik. 23., ĂŒberarbeitete Auflage, Springer 2006, S. 986
  3. ↑ W. Baier (Hrsg.): Elektronik Lexikon. 2. Auflage. Franckh’sche Verlagshandlung, Stuttgart 1982, S. 485.
  4. ↑ D. J. Kinniment et al.: Design of an on–chip random number generator using metastability. In: Proceedings of the 28th European Solid-State Circuits Conference, 24.–26. September 2002, S. 595–598.
  5. ↑ Wolfgang Scheibe, Zufallsgeber in GeldspielgerĂ€ten, Automaten-Markt, Heft 5, 1966, S. 523–534, online (Memento vom 27. August 2019 im Internet Archive).
  6. ↑ Giorgio Vazzana: Random Sequence Generator based on Avalanche Noise
  7. ↑ George Marsaglia: Instructions for using DIEHARD â€“ a battery of tests of randomness. Diehard.doc, 7. Januar 1997, S. 3 (englisch).
  8. ↑ D. E. Knuth, The Art of Computer Programming, Volume 2: Seminumerical Algorithms. Addison-Wesley, Reading (MA) 1997, ISBN 0-201-89684-2.
  9. ↑ cplusplus.com: rand
  10. ↑ cppreference.com: std::rand
Normdaten (Sachbegriff): GND: 4191097-7 (GND Explorer, lobid, OGND, AKS)
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Zufallszahlengenerator&oldid=260014842“
Kategorien:
  • Zufallszahlengenerator
  • Kryptologisches Verfahren
  • Stochastik

  • indonesia
  • Polski
  • Ű§Ù„ŰčŰ±ŰšÙŠŰ©
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • Ù…Ű”Ű±Ù‰
  • Nederlands
  • æ—„æœŹèȘž
  • PortuguĂȘs
  • Sinugboanong Binisaya
  • Svenska
  • ĐŁĐșŃ€Đ°Ń—ĐœŃŃŒĐșа
  • Tiáșżng Việt
  • Winaray
  • äž­æ–‡
  • РуссĐșĐžĐč
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id