www.wikidata.de-de.nina.az
Als Zufallszahlengenerator kurz Zufallsgenerator bezeichnet man ein Verfahren das eine Folge von Zufallszahlen erzeugt Der Bereich aus dem die Zufallszahlen erzeugt werden hangt dabei vom speziellen Zufallszahlengenerator ab Man unterscheidet grundsatzlich 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 benotigt 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 Glucks spiele und diverse Kryptographieverfahren Inhaltsverzeichnis 1 Nichtdeterministische Zufallszahlengeneratoren 1 1 Physikalischer Zufallszahlengenerator 1 2 Quasizufallige Ereignisse 2 Deterministische Zufallszahlengeneratoren 2 1 Gute eines Zufallszahlengenerators 2 2 Nicht periodischer unendlicher Generator 2 3 Softwaretechnische Realisierungen 2 4 Hardwaretechnische Realisierungen 2 5 Programmierung 3 Hybride Generatoren 4 Siehe auch 5 Weblinks 6 EinzelnachweiseNichtdeterministische Zufallszahlengeneratoren BearbeitenPhysikalischer Zufallszahlengenerator Bearbeiten Ein physikalischer Zufallszahlengenerator dient der Erzeugung von Zufallszahlen und benutzt dafur physikalische Prozesse Hierbei werden beispielsweise Impuls schwankungen elektronischer Schaltungen z B thermisches Rauschen eines Widerstands oder radioaktive Zerfallsvorgange ausgenutzt Generell konnen alle naturlichen Quellen verwendet werden die auf physikalischen Effekten basieren und eine recht hohe Gute liefern aber auch andere asynchrone Quellen wie z B Atmospharenrauschen 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 tatsachlichen 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 Unabhangigkeit und Gleichverteilung der erzeugten Zufallszahlen nur durch hinreichend grosse Abstande bei der Beobachtung der physikalischen Prozesse bzw Abfangverfahren erreicht werden konnen 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 moglich da die produzierten Zufallszahlen echt zufallig 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 lauft unendlich Beispielsweise kann ein Geigerzahler die Zahl der radioaktiven Zerfalle in einer bestimmten Zeitspanne messen Man nutzt die Tatsache dass ein radioaktives Nuklid nach einer rein zufalligen Zeit in sein Tochternuklid zerfallt Die Zeitspanne hat aber beim gleichen Nuklid immer den gleichen Mittelwert die sogenannte mittlere Lebensdauer die mit der Halbwertszeit uber den Faktor 1 l n 2 textstyle frac 1 ln 2 nbsp zusammenhangt 2 Da der radioaktive Zerfall immer unabhangig von Umgebungsbedingungen ablauft kann dieser Vorgang Zufallszahlen hoher Gute liefern Daneben konnen auch Rauschgeneratoren als Zufallsgeneratoren verwendet werden 3 Eine Methode zum Aufbau von Zufallsgeneratoren in digitalen Schaltungen besteht in der Ausnutzung der Metastabilitat bei taktflankengesteuerten Flipflops 4 Gute physikalische Verfahren zur Generierung von Zufallszahlen sind auch das Wurfeln und die Ziehung von Lottozahlen mit den dafur typischen Maschinen Zufallsziehungen in relativ schneller Abfolge wurden bei elektromechanischen Glucksspielautomaten realisiert und zwar auf Basis von Nockenscheiben mit Exzenterrradchen und einem Schaltzeitvariator 5 Bei physikalischen Zufallszahlengeneratoren besteht jedoch das Problem der Alterung Beispielsweise haben Geiger Muller Zahlrohre eine Lebensdauer von typischerweise einer Billion Pulse und sind zudem abhangig von Temperatur Magnetfeldern und der Versorgungsspannung Zudem muss bei Geigerzahlern die Pulsrate deutlich hoher als die Taktfrequenz sein mit der die Pulse eingelesen werden Eine Losung 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 erhalt man damit auch mit schlechten Zufallszahlengeneratoren perfekt zufallige Zufallsbits sofern genugend viele Zufallszahlengeneratoren verwendet werden Eine der einfachsten Moglichkeiten wirklich zufallige Sequenzen zu erzeugen verwendet Lawinenrauschen in einem umgekehrt vorgespannten Ubergang Wenn eine Diode in Sperrrichtung vorgespannt ist fliesst tatsachlich nur ein sehr geringer Strom und in erster Naherung kann die Diode als offener Stromkreis betrachtet werden Wenn die Sperrspannung jedoch erhoht 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 konnen namlich die Lawinenvervielfachung und das quantenmechanische Tunneln von Ladungstragern durch die Bandlucke Die durch den grossen Durchbruchstrom und die hohe Durchbruchspannung verursachte Erwarmung fuhrt jedoch dazu dass die Diode zerstort wird wenn keine ausreichende Warmeableitung bereitgestellt wird Lawinenrauschen ist das Rauschen das erzeugt wird wenn eine pn Diode zu Beginn des Lawinendurchbruchs betrieben wird Es tritt auf wenn Ladungstrager unter dem Einfluss des starken elektrischen Feldes genugend kinetische Energie erhalten um durch Kollision mit den Atomen im Kristallgitter zusatzliche Elektron Loch Paare zu erzeugen Wenn dieser Prozess in einen Lawineneffekt ubergeht konnen zufallige Rauschspitzen beobachtet werden Um ein solches Rauschen zu erzeugen kann man den Basis Emitter Ubergang eines Kleinsignal Transistors verwenden da dieser Ubergang fur viele gangige Gerate eine relativ niedrige Durchbruchspannung hat Die Menge an erzeugtem Rauschen hangt von den physikalischen Eigenschaften des Ubergangs ab wie zum Beispiel den verwendeten Materialien und dem Dotierungsniveau 6 Quasizufallige Ereignisse Bearbeiten Es wird beispielsweise die Systemzeit bestimmt innerhalb der eine Benutzeraktion eintritt Auf diese Weise erzeugte Zufallszahlen haben meist eine geringe Gute lassen sich aber als Startwert fur deterministische Verfahren verwenden Deterministische Zufallszahlengeneratoren BearbeitenDeterministische Zufallszahlengeneratoren erzeugen Pseudozufalls zahlen und werden daher in der Regel Pseudozufallszahlengeneratoren genannt engl pseudo random number generator PRNG Sie erzeugen eine Zahlenfolge die zwar zufallig aussieht es aber nicht ist da sie durch einen deterministischen Algorithmus berechnet wird Solche Pseudozufallszahlen sind von Computern wesentlich einfacher zu erzeugen und in praktisch allen hoheren Programmiersprachen verfugbar Bei jedem Start der Berechnung mit gleichem Startwert engl seed d h Saatkorn wird die gleiche Folge erzeugt weshalb diese deterministisch erzeugten Pseudozufallszahlen bei hinreichend genauer Dokumentation spater reproduziert werden konnen Diese Eigenschaft der Reproduzierbarkeit ist bedeutsam fur die Anerkennung wissenschaftlicher Experimente Auszahlreime in Kinderspielen stellen auch eine Art deterministischer Zufallszahlengeneratoren dar Gute eines Zufallszahlengenerators Bearbeiten Die erzeugten Zahlen konnen durch statistische Tests gepruft werden Dazu gehort die erzeugte Verteilung z B Normalverteilung Gleichverteilung Exponentialverteilung etc oder die Unabhangigkeit aufeinanderfolgender Zahlen Wie gut die erzeugten Zahlen den statistischen Vorgaben entsprechen bestimmt die Gute eines Zufallszahlengenerators Am Beispiel eines Zufallszahlengenerators der nur die Zahlen 0 und 1 ausgeben kann z B simulierter Munzwurf kann man sich klarmachen dass allein die gleiche Haufigkeit beider Ergebnisse nicht ausreicht da etwa die Folge 0 1 0 1 0 1 0 1 intuitiv nicht zufallig erscheint Es sollten im optimalen Fall auch alle moglichen Paare aufeinander folgender Ergebnisse mit den erwarteten Haufigkeiten auftreten ja moglichst auch Tripel Quadrupel usw Diese Uberlegungen fuhren auf den Spektraltest Ein sehr einfaches Gutekriterium ist die Periodenlange die im Verhaltnis zum Wertebereich moglichst lang sein sollte Dies ist etwa beim Mersenne Twister in besonders starkem Masse der Fall Ein simpler linearer Kongruenzgenerator kann dagegen den Wertebereich pro Periode bestenfalls einmal durchlaufen dies sollte umgekehrt als Mindestanforderung gesehen werden und kann durch ein einfaches Kriterium gepruft werden Satz von Knuth Weitere Gutetests beruhen auf dem Chi Quadrat Test dem Kolmogorow Smirnow Test u a Knuth listet noch zahlreiche andere Tests so den serial test den Lucken Test den Poker Test den Couponsammler Test den Permutations Test den Lauf Test den Maximum aus t displaystyle t nbsp Test und den Kollisions Test Es kommt vor dass ein Generator bei mehreren Tests sehr gut abschneidet aber bei einem anderen versagt Fur einige Anwendungen wie Simulationen die den entsprechenden Testbedingungen nahe sind ist ein solcher Generator dann ungeeignet 7 Besonders strenge Anforderungen werden an kryptographisch sichere Zufallszahlengeneratoren gestellt Nicht periodischer unendlicher Generator Bearbeiten Man betrachte die Nachkommastellen der Quadratwurzel einer naturlichen Zahl als Zufallszahlen hierbei ist selbstverstandlich darauf zu achten dass die resultierende Wurzel eine irrationale Zahl ist Klassischerweise kann man statt n displaystyle sqrt n nbsp auch die Kreiszahl p displaystyle pi nbsp 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 Softwaretechnische Realisierungen Bearbeiten Arithmetische Zufallszahlengeneratoren basieren auf der Arithmetik Irrationale Zahlen wie 2 displaystyle sqrt 2 nbsp oder e displaystyle e nbsp konnen als Zufallszahlengeneratoren verwendet werden indem man den gebrochenen Teil beliebiger Vielfache als Zufallszahlen nutzt Nachteil des Verfahrens ist dass sich irrationale Zahlen nur als Naherungswerte innerhalb der Rechengenauigkeit 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 Zufallszahlengenerators in die Berechnung ein Beim allerersten Aufruf des Zufallszahlengenerators muss ein willkurlich gewahlter Startwert 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 HashfunktionenHardwaretechnische Realisierungen Bearbeiten Schieberegister mit Ruckkopplung lineares Schieberegister nichtlineares SchieberegisterProgrammierung Bearbeiten In der Programmiersprache C konnen Zufallszahlen mit der Funktion rand der Standardbibliothek generiert und auf einfache Weise verwendet werden 8 9 Ein einfacher Zufallsgenerator kann auch neu programmiert werden Das folgende Programm zeigt die Implementierung eines linearen Kongruenzgenerators mit m 2147483648 displaystyle m 2147483648 nbsp a 214013 displaystyle a 214013 nbsp und b 2531011 displaystyle b 2531011 nbsp Es erzeugt 10 Zufallszahlen die in einem Array gespeichert werden Bei der Ausfuhrung des Programms wird die Hauptfunktion main verwendet die die Zufallszahlen auf der Konsole ausgibt 10 11 include lt iostream gt using namespace std Funktion die die Zufallszahlen erzeugt int linearCongruentialGenerator int y0 int m int a int b int count int randomNumbers new int count Initialisiert das Array fur die Zufallszahlen randomNumbers 0 a y0 b m Erste Zufallszahl setzt den nullten Eintrag schon vor dem Loop for int i 1 i lt count i randomNumbers i a randomNumbers i 1 b m return randomNumbers Hauptfunktion die das Programm ausfuhrt int main int y0 0 Startwert int a 214013 linearer Faktor int b 2531011 Offset int m 2147483648 Modulus int count 10 Anzahl der gewunschten Zufallszahlen int randomNumbers linearCongruentialGenerator y0 m a b count Aufruf der Funktion for int i 0 i lt count i cout lt lt randomNumbers i lt lt endl Ausgabe auf der Konsole Hybride Generatoren BearbeitenIn der Praxis verwendet man haufig arithmetische Zufallszahlengeneratoren die eine Mischform sind Sie berechnen Pseudozufallszahlen verwenden dafur allerdings bei Bedarf einen echt zufalligen Startwert Die Entropie der generierten Zufallszahl kann jedoch nicht grosser sein als die des Startwerts In der Praxis findet man solche hybriden Zufallszahlengeneratoren unter unixoiden Betriebssystemen wie Linux oder BSD unter a href dev random html title dev random dev random a und a href dev urandom html class mw redirect title dev urandom dev urandom a Diese zeigen praktisch keinerlei statistische Auffalligkeiten Ihre Initialisierung erfolgt in den meisten Fallen jedoch nicht mit den beschriebenen Methoden sondern durch Auswertung des zeitlichen Abstandes von Hardwareereignissen Tastatureingaben Netzwerkverkehr und Ahnliches die ebenfalls als zufallig erachtet werden konnen Im einfachsten Fall wird ein Pseudozufallszahlengenerator gewahlt der gelegentlich mit einer neuen echten Zufallszahl als Startwert neu gestartet wird Siehe auch BearbeitenListe von Zufallszahlengeneratoren Kryptographisch sicherer ZufallszahlengeneratorWeblinks Bearbeiten nbsp Wiktionary Zufallszahlengenerator Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Echter online Zufallszahlengenerator engl RANDOM ORG offers true random numbers on the internet Einzelnachweise Bearbeiten timer entropy daemon D Meschede Hrsg Gerthsen Physik 23 uberarbeitete Auflage Springer 2006 S 986 W Baier Hrsg Elektronik Lexikon 2 Auflage Franckh sche Verlagshandlung Stuttgart 1982 S 485 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 Wolfgang Scheibe Zufallsgeber in Geldspielgeraten Automaten Markt Heft 5 1966 S 523 534 online Memento vom 27 August 2019 im Internet Archive Giorgio Vazzana Random Sequence Generator based on Avalanche Noise D E Knuth The Art of Computer Programming Volume 2 Seminumerical Algorithms Addison Wesley Reading MA 1997 ISBN 0 201 89684 2 cplusplus com rand cppreference com std rand Rosetta Code Linear congruential generator GeeksforGeeks Linear Congruence method for generating Pseudo Random NumbersNormdaten Sachbegriff GND 4191097 7 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Zufallszahlengenerator amp oldid 238215327