Zufällig generierte Zahlen haben viele Anwendungen in Computer-Programme , wie das Erstellen von Unberechenbarkeit in Spielen, Simulationen und Modellierung Verschlüsselung durchzuführen . Java bietet zwei Techniken zum Erzeugen von Zufallszahlen . Die Math -Bibliothek bietet eine einfache, aber bequeme, zufällige Verfahren zum Erzeugen einer zufälligen Gleitkomma- Wert zwischen 0 und 1,0. Die Random-Klasse bietet mehr flexible Zufallszahlenerzeugungsmittel Fähigkeiten.
Zufallszahlen -Generatoren sind in der Programmierung von Glücksspielen verwendet .
Basics
Zufallszahlengenerator ist eine Routine entwickelt, um einen numerischen Wert, der durch Zufall gewählt erscheint produzieren . In Java, wie bei allen Programmiersprachen , erscheinen die Werte von Math.random () und der Random-Klasse erzeugt zufällige , aber eigentlich sind es nicht. Daher sind solche Verfahren sagte Pseudo- Zufallszahlen erzeugen
Eigenschaften
Pseudo - Zufallsgeneratoren haben zwei grundlegende Eigenschaften : . . Verteilung und Samen
Die " Verteilung " bezieht sich auf die Häufigkeit, in der jeder Wert in einer Reihe von generierten Zahlen angezeigt. Die meisten von zufälligen Methoden Java einen gleichmäßigen Verteilung von Zahlen , dh keiner Wert häufiger auftreten als andere . Die Random-Klasse verfügt über eine Methode , NextGaussian , die Zahlen, die eine Gaußsche (auch "normal " oder " Glockenkurve " ) Verteilung folgen erzeugt .
Der "Samen" ist eine Zahl, einen Pseudo-Zufallszahlengenerator initialisieren Generator . Wird derselbe wird eine Pseudo -Zufallszahlen- Generator erzeugt eine identische Reihe von Zahlen , wenn sie aufgerufen mit den gleichen Methoden und Parameter . Die Fähigkeit, eine Reihe von Zahlen zu reproduzieren ist nützlich bei der Fehlersuche , Tests und andere Szenarien, in denen Neuerstellung einer Anwendung laufende Umgebung benötigt wird.
Math.random ()
Math.random ()-Methode ist eine einfache Pseudo- Zufallszahlengenerator . Es wird einfach durch den Aufruf Math.random () verwendet . Die Methode liefert eine doppelte zwischen 0,0 (einschließlich) und 1,0 (exklusiv) . Die Werte erzeugt eine gleichmäßige Verteilung folgen . Wenn ein anderer Bereich , Typ oder Verteilung benötigt werden, muss der Programmierer die Ergebnisse auf den gewünschten Typ umgewandelt und zusätzliche Berechnungen , um das gewünschte Ergebnis zu erzeugen .
The Random Class
< p> Die Random-Klasse ist flexibler als Math.random () , erfordert aber ein wenig mehr Aufwand zu bedienen. Eine Instanz der Random-Klasse konstruiert wird. Der Konstruktor wird eine lange ganze Zahl als Startwert , oder wenn ein Startwert nicht vorgesehen ist , wird die aktuelle Zeit in Millisekunden als Standard- Saatgut zu verwenden. Die Random- Klasse stellt eine Methode zur Festsetzung der Samen nach dem Bau. Es gibt verschiedene Pseudo- Zufallszahlen-erzeugende Methoden in dieser Klasse , die jeweils mit dem Wort vorangestellten " Weiter". Die meisten dieser Methoden geben gleichmäßig verteilte Werte in verschiedenen Bereichen und von verschiedenen Arten , wie ganze Zahlen , Fließkommazahlen und boolesche Werte . Die Methode gibt NextGaussian gaußverteilt Doppelzimmer. Die nextInt Verfahren kann einen ganzzahligen Parameter , die das obere Ende des Bereichs setzt .
Überlegungen
Generieren einer Reihe von Zahlen, die nicht vorhergesagt werden kann ist manchmal wünschenswert , für Beispiel für Spieler aus der Lage, in Spielen zu betrügen verhindern. Die pseudo- zufällige Werte von mehreren Instanzen der Klasse Random zurückgegeben werden kombiniert, um zusätzliche Zufälligkeit in dem resultierenden Satz bereitzustellen. Implementieren einer ungleichmäßigen Verteilung auch nützlich sein.
Java erzeugt Pseudo- Zufallszahlen, die entweder eine gleichförmige oder Gauß-Verteilung folgen . Ungleichmäßige Verteilungen sind nützlich , vor allem in Simulationen , Szenarien , die auf bestimmte Ausschüttungen in der Realität entsprechen imitieren. Andere Verteilungen kann unter Verwendung der inversen Verteilungsfunktion der gewünschten Verteilung werden. Diese Funktion nimmt eine Wahrscheinlichkeit (ein Wert zwischen 0,0 und 1,0 exklusiv) als Parameter. Die Null- Ergebnisse der beiden Math.random () oder einer der Random-Klasse Methoden, die eine Gleitkomma- Wert zurückgibt, kann für diesen Parameter verwendet werden. Siehe Abschnitt Ressourcen für einen Link auf der Apache- Math -Bibliothek, die inverse Methoden für mehrere kumulierte Ausschüttungen bietet .