Vorlesung Informatik 1 - Teil A: Java Kurs
1.12 Zufällig verteilte Zahlen
Anwendungen, besonders Spiele wirken interessanter, wen man zufällige Ereignisse einstreut.
Das können zufällige Zeitintervalle sein, zufällige Orte auf dem Bildschirm, zufällige Richtungen, Geschwindigkeiten, Farben, ...
Die Klasse java.util.Random bietet die Möglichkeit, Zufallszahlen zu erzeugen:
- Wird mit Standardkonstruktor initialisiert:
Random zufall = new Random(); - Methode nextInt(): int liefert zufällige ganze Zahl zwischen -231 und +231
- Überladene Methode nextInt(limit: int):int liefert zufällige ganze Zahl z : 0 ≤ z< limit
- Methode nextDouble(): double liefert gebrochene Zahl z : 0.0≤ z < 1.0
Das Objekt vom Typ Ramdom ist in der Regel eine Instanzvariable:
private Random zufall= new Random(); // das Objekt kann entweder
direkt hier oder im Konstruktor erzeugt werden
Um eine zufällige Farbe zu erzeugen:
int rot= zufall.nextInt(256); // Farbwerte
liegen zwischen 0 und 255
int gruen =
zufall.nextInt(256);
int blau
= zufall.nextInt(256);
Color
farbe = new Color(rot, gruen, blau);
Wollen wir nur dunkle Farben erzeugen, setzen wir die Parameter von nextInt
auf 128.
Das ist z.B. wichtig, wenn wir darauf Text darstellen wollen, dann wählen wir
als Schriftfarbe weiß.
Für helle Farben:
int rot =
zufall.nextInf(128)+128;
Jetzt können
wir auf all diesen Hintergründen schwarze Schrift verwenden.
Beispiel: eine zufällige Zeit in Millisekunde, die zwischen 3 und 5 Sekunden liegt, also 3000 bis 4999
Millisekunden:
in zeit = zufall.nextInt(2000) + 3000;
Um z.B. einen Richtungsvektor (x,y) zu erzeugen nehmen wir nextDouble():
double x = zufall.nextDouble(); // Zahl zwischen 0 und 1
double
y = zufall.nextDouble();
Manchmal möchte man zu Testzwecken immer die gleiche Sequenz von Zufallszahlen erzeugen,
dann verwenden wir den
überladenen Konstruktor:
Random zufall = new Random(42);
Wobei die beliebige Zahl 42 als Seed bezeichnet wird.