Dienstag, 23. August 2011

Math.random() - Anwendungsbeispiele mit Erklärung

In der Programmierung werden häufig Zufallszahlen benötigt.

Eine einfache Möglichkeit, diese in Java zu erzeugen, bietet die Klasse "Math". Um eine Zufallszahl größer gleich 0.0 und kleiner als 1.0 zu erhalten, verwenden wir den in der folgenden Testklasse enthaltenen Funktionsaufruf Math.random():


public class TestRandom {
  public static void main(String[] args) { 
   double zufallszahl;
   zufallszahl = Math.random();
   System.out.println(zufallszahl);
 }
}

Doch wie erhält man nun ganzzahlige Zufallszahlen in einem festgelegten Bereich?
(z.B. eine ganze Zahl zwischen 0 und 9)

Ganz einfach!

Wir multiplizieren den von Math.random() gelieferten Wert mit der Anzahl möglicher Zufallszahlen. Das Ergebnis runden wir ab:

public class TestRandom2 {
  public static void main(String[] args) {
    int zufallszahl;
    zufallszahl = (int)(Math.random() * 10); 
    System.out.println(zufallszahl);   
  }
} 

Die Klasse TestRandom2 liefert uns also zufällige Zahlen zwischen 0 und 9. Wie erhalten wir nun beispielsweise Zahlen zwischen 1 und 10 oder zwischen 13 und 29?

Hierfür verfahren wir zunächst genauso, nur addieren wir am Ende noch die kleinstmögliche Zufallszahl zum Ergebnis hinzu, womit wir eine Verschiebung des Ergebnisbereichs bewirken.

public class TestRandom3 {
  public static void main(String[] args) {
    int zufallszahl; 
    zufallszahl = (int)(Math.random() * 10) + 1; 
    System.out.println(zufallszahl);
 }
} 

Wir erhalten nun Zahlen zwischen 1 und 10.

Für das oben genannte Beispiel einer Zufallszahl zwischen 13 und 29 muss die Zuweisung leicht verändert werden:

//Liefert eine von 17 Zufallszahlen (im Bereich von 13 bis 29)
zufallszahl = (int)(Math.random() * 17) + 13;