Zufallszahlen mit roten Würfeln

Java: Zufallszahlen in einem bestimmten Bereich erstellen

By

in

Angenommen, man möchte mit Java eine Zufallszahl innerhalb eines bestimmten Zahlenbereiches definieren. In den folgenden Beispielen soll eine Zufallszahl zwischen 5 (inklusive) und 15 (inklusive) erstellt werden.

Hierfür definiere ich zunächst zwei Variablen, die in den nachfolgenden Code-Zeilen die Grenzwerte für Maximum und Minimum beinhalten:

int min = 5;
int max = 15;

Zufallszahl mit Math.random()

Die Methode Math.random() bietet eine Möglichkeit, um Zufallszahlen zu erstellen.

Die Methode java.lang.Math.random() gibt eine Pseudozufallszahl vom Typ double zurück, die größer oder gleich 0.0 und kleiner als 1.0 ist.

https://www.javatpoint.com/java-math-random-method

Die Methode kann wie folgt verwendet werden (allerdings bedarf es etwas Umrechnung, um auf eine Zahl zwischen min und max zu kommen):

int x = (int)(Math.random() * ((max - min) + 1)) + min

x ist nun eine Zufallszahl im Bereich [min, max].

Im Detail

Die Java Math Funktion Math.random() gibt einen double Werte im Bereich [0, 1) zurück, wobei die 1 nicht mit eingeschlossen ist. Man sollte den Zufallswert also zunächst mit max-min multiplizieren, um den Bereich abzudecken:

Math.random() * ( max - min )

Dies liefert einen Wert im Bereich [0, max – min), wobei der Endwert max - min nicht enthalten ist. Nun sollte der Bereich noch in den gewünschten Bereich verschoben werden, indem man min dazu addiert:

(Math.random() * (max - min)) + min

Die Zufallszahl enthält allerdings immer noch nicht den Wert max, d.h. man muss 1 zum Wert max - min hinzuaddieren. Abschließend müssen noch alle Nachkommastellen durch ein Casten zu (int) entfernt werden.

(int)(Math.random() * ((max - min) + 1)) + min

Zufallszahl mit Random()

Die Klasse Random kann ebenfalls für Zufallszahlen verwendet werden. Sie stellt eine Methode nextInt() bereit:

Gibt einen Pseudozufalls-, gleichmäßig verteilten ganzzahligen Wert zurück, der zwischen 0 (inklusiv) und dem angegebenen Wert (exklusiv) liegt und aus der Sequenz dieses Zufallszahlengenerators stammt. Der allgemeine Vertrag von nextInt besagt, dass ein ganzzahliger Wert im angegebenen Bereich pseudozufällig generiert und zurückgegeben wird. Alle möglichen begrenzten ganzzahligen Werte werden mit (ungefähr) gleicher Wahrscheinlichkeit erzeugt.

https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt–

So kann die Klasse bzw. die Method verwendet werden:

import java.util.Random;

Random ran = new Random();
int x = ran.nextInt(max - min + 1) + min;

Die Zahl x ist hier eine Zufallszahl im Bereich [min, max]. Neben nextInt() gibt es noch andere Methoden wie nextDouble(), nextFloat() etc. die genau wie nextInt() verwendet werden können, um Zufallszahlen zu generieren. Der Typ des Rückgabewertes ist dann entsprechend ein double, float oder eben integer.

Foto von Robert Stump auf Unsplash



Comments

One response to “Java: Zufallszahlen in einem bestimmten Bereich erstellen”

  1. […] zum Artikel über Java Zufallszahlen bietet auch Dart Möglichkeiten, um eine Zufallszahl zu […]

Leave a Reply

Your email address will not be published. Required fields are marked *