Java Standard: Random

Aus Wikibooks


Random ist eine Klasse zur Erzeugung von Pseudozufallszahlen. Die statische Funktion Math.random() macht z.B. direkt Gebrauch davon.

Random erzeugt eine Pseudo-Zufallszahl, d.h. keine richtige Zufallszahl. Der Unterschied liegt darin, dass zwei Random-Instanzen, wenn sie direkt gleichzeitig gestartet werden, genau die gleichen Zufallszahlen erzeugen, was bei "echten" Zufallszahlen nicht der Fall wäre. Um dieses Manko abzuschalten, gibt es eine abgeleitete Klasse SecureRandom, die "echte" Zufallszahlen mit anderen numerischen Algorithmen erstellt als Random. Random benutzt einen 48-Bit großen Startwert ("seed") zur Erzeugung der Zufallszahlen. Die Zufallszahlen (z) liegen immer im Bereich .

Ein einfaches Beispiel zur einfachen Erzeugung von Lottozahlen – ein Array aus 10 Integern wird mit Math.random() initialisiert:

  final int MAX = 10;                                    // Konstante für Feldgroesse
  int daten[] = new int[MAX];                            // integer-Feld erzeugen
  for (int i = 0; i < MAX; i++){                          // Schleife über alle Elemente
    daten[i] = (int)Math.floor((Math.random() * 49) + 1);}      // Zufallszahl zuweisen  [1..49]

Da Math.random eine Zahl kleiner 1 erzeugt, muss man, um eine Zahl zwischen 1 und 49 zu erhalten, das Ergebnis der Funktion Math.random mit 49 multiplizieren und diese Zahl dann um 1 vergrößern.

Ein einfaches Beispiel zur Erzeugung von Lottozahlen mit Hilfe der Random-Klasse

  public static final int MAX = 10;  // Konstante für Feldgroesse
  int daten[] = new int[MAX];      // integer-Feld erzeugen
  Random rand = new Random();
  for( int i=0; i<MAX; i++ )         // Schleife über alle Elemente
  {     
    daten[i] = rand.nextInt(49) + 1;
  }