====== Die Klasse Random ======
Die Klasse **Random** gehört zur Standard Java API und wir benutzen sie um Zufallszahlen zu erzeugen.
In diesem Abschnitt zeigen wir, wie man in Java gleich verteilte Zufallszahlen erzeugt.
**Zufall ist kompliziert!**\\ Das erzeugen von diesen Zufallszahlen geschieht nicht zufällig, sondern nach einer genauen Rechenvorschrift.
==== Erzeugen von ganzen Zufallszahlen int ====
Dieses Programm erzeugt mit gleicher Wahrscheinlichkeit eine 0,1 oder eine 2 und gibt sie aus.
import java.util.*;
public class Zufall1{
public static void main(String[] args) {
Random rnd = new Random();
int zahl = rnd.nextInt(3);
System.out.print("Ausgabe: " + zahl);
}
}
==== Erzeugen von Gleitkomma-Zufallszahlen double ====
Dieses Programm erzeugt mit gleicher Wahrscheinlichkeit eine Zahl zwischen **0** und **1** und gibt sie auf der Konsole aus.\\ Lassen Sie das Programm mehrmals laufen und schauen Sie sich die erzeugten Zufallszahlen an.
import java.util.*;
public class Zufall2{
public static void main(String[] args){
Random rnd = new Random();
double zahl = rnd.nextDouble();
System.out.print("Ausgabe: " + zahl);
}
}
====Initialisierung des Zufallszahlengenerators ====
Java erzeugt nicht nur eine Zufallszahl, sondern eine ganze Sequenz von Zufallszahlen. Die von Java erzeugte Sequenz der Zufallszahlen ist immer dieselbe. Um verschiedene Sequenzen zur erzeugen, muss der Startwert des Zufallsgenerators in Java initialisiert werden. Die Anweisung **Random rnd = new Random()** erzeugt Zufallszahlen, die die Startsequenz mit der aktuellen Uhrzeit initialisiert. Manchmal ist es sinnvoll, diese Sequenz festzulegen (vor allem für das Debuggen kann das manchmal hilfreich sein). \\
Der folgende Codeausschnitt erzeugt eine feste Sequenz von Zufallszahlen, wobei der Zufallszahlengenerator mit der Zahl 12345 initialisiert worden ist. Lassen Sie das Programm mehrmals laufen und merken Sie sich das Ergebnis.
import java.util.*;
public class Zufall3{
public static void main(String[] args) {
Random rnd = new Random();
rnd.setSeed(12345);
for(int i = 0; i < 10; i++){
double zahl = rnd.nextDouble();
System.out.print("Ausgabe: " + zahl);
}
}
}
Lese die Dokumentation der Methoden setSeed(), nextDouble() und nextInt(...) in der Java-API Dokumentatin nach.
==== Wie geht es weiter ====
Früher oder später werden Sie sich mit folgende Fragen auseinandersetzen müssen.
* Was sind gute Zufallszahlen?
* Wie bekommt man andere Bereiche oder Verteilungen?