Falconbyte unterstüzen
Betrieb und Pflege von Falconbyte brauchen viel Zeit und Geld. Um dir auch weiterhin hochwertigen Content anbieten zu können, kannst du uns sehr gerne mit einem kleinen "Trinkgeld" unterstützen.
Schnelles Code-Beispiel
int zufall = (int)((Math.random() * 10) + 1); // 1 ... 10
- Es gibt keine Zufälle
- Pseudozufallszahl generieren
Inhaltsverzeichnis
Es gibt keine Zufälle
Bevor wir konkret werden, sollten wir uns klar machen, dass es nicht möglich ist, eine "echte" Zufallszahl zu erstellen. Die Zahl, die unser Code am Ende des "Zufallsgenerators" produziert, erscheint uns nur als zufällig. In Wirklichkeit beruht sie auf einem deterministischen Algorithmus - wurde also berechnet.
- Eine Pseudozufallszahl ist eine durch einen Algorithmus berechnete Zahl und erscheint daher nur zufällig (=pseudo).
Pseudozufallszahl generieren
Eine Pseudozufallszahl lässt sich in Java mit Hilfe der statischen Methode Math.random() generieren. Die API-Klasse Math ist im Paket java.lang in jedem Java-Programm standardmäßig enthalten und muss daher nicht importiert werden.
Math.random() liefert einen pseudo-zufälligen positiven double-Wert zwischen 0.0 und kleiner 1.0.
double zufallszahl = Math.random();
Mögliche Werte könnten sein:
0.7442842549825681, 0.2514743086365736, 0.15476819198386538 usw.
Mit einer solchen Zahl lässt sich in vielen Fällen nicht allzu gut arbeiten. Besser ist die Produktion eines ganzzahligen Werts zwischen 0 und 9. Dazu multiplizieren wir die die Pseudozufallszahl mit 10 und konvertieren anschließend in einen int-Wert:
int zufallszahlGanz = (int) (zufallszahl * 10);
Mögliche Ergebnisse könnten jetzt so aussehen:
3, 7, 0 usw.
Wollen wir jetzt noch die Range verändern, addieren wir einfach entsprechend:
zufallszahlGanz += 1; // 1 ... 10
Fertiger Code
Die einzelnen Schritte lassen sich effizient auch in einer Anweisung schreiben. Hier dein Code für eine ganzzahlige Pseudo-Zufallszahl zwischen 1 und 10:
package p1;
public class Pseudozufallszahl {
public static void main(String[] args) {
int zufall = (int) ((Math.random() * 10) + 1); // 1 ... 10
System.out.println(zufall);
}
}