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.




Weiterführende Links

Kapitel zu Standard-Dialogen in Java ist auch eine Insel

Lehrvideo  (YouTube)