Zufallszahlen in Java generieren

click fraud protection

Generieren einer Reihe von zufällige Zahlen ist eine dieser häufigen Aufgaben, die von Zeit zu Zeit auftauchen. Im Javakann dies einfach mit java.util erreicht werden. Zufällige Klasse.

Der erste Schritt, wie bei der Verwendung einer API Klasseist, die import-Anweisung vor den Start Ihrer Programmklasse zu stellen:

Erstellen Sie als Nächstes ein zufälliges Objekt:

Das Zufallsobjekt bietet Ihnen einen einfachen Zufallszahlengenerator. Die Methoden des Objekts geben die Möglichkeit, Zufallszahlen auszuwählen. Beispielsweise geben die Methoden nextInt () und nextLong () eine Zahl zurück, die im Wertebereich (negativ und positiv) des Datentyps int bzw. long liegt:

Die zurückgegebenen Zahlen sind zufällig ausgewählte int- und long-Werte:

Zufallszahlen aus einem bestimmten Bereich auswählen

Normalerweise müssen die zu erzeugenden Zufallszahlen aus einem bestimmten Bereich liegen (z. B. zwischen 1 und einschließlich 40). Zu diesem Zweck kann die nextInt () -Methode auch einen int-Parameter akzeptieren. Es bezeichnet die Obergrenze für den Zahlenbereich. Die Obergrenzenzahl ist jedoch nicht als eine der Zahlen enthalten, die ausgewählt werden können. Das mag verwirrend klingen, aber die nextInt () -Methode funktioniert ab Null. Beispielsweise:

instagram viewer

wählt nur eine Zufallszahl von 0 bis einschließlich 39 aus. Um aus einem Bereich auszuwählen, der mit 1 beginnt, fügen Sie einfach 1 zum Ergebnis der nextInt () -Methode hinzu. Um beispielsweise eine Zahl zwischen 1 und 40 auszuwählen, fügen Sie dem Ergebnis eine hinzu:

Wenn der Bereich von einer höheren Zahl als einer ausgeht, müssen Sie:

  • minus der Startnummer von der oberen Grenzzahl und fügen Sie dann eine hinzu.
  • Fügen Sie die Startnummer zum Ergebnis der nextInt () -Methode hinzu.

Um beispielsweise eine Zahl von 5 bis einschließlich 35 auszuwählen, lautet die Obergrenze 35-5 + 1 = 31, und dem Ergebnis muss 5 hinzugefügt werden:

Wie zufällig ist die zufällige Klasse?

Ich möchte darauf hinweisen, dass die Random-Klasse auf deterministische Weise Zufallszahlen generiert. Der Algorithmus, der die Zufälligkeit erzeugt, basiert auf einer Zahl, die als Startwert bezeichnet wird. Wenn die Startnummer bekannt ist, ist es möglich, die Nummern herauszufinden, die aus dem Algorithmus erzeugt werden sollen. Um dies zu beweisen, verwende ich die Zahlen ab dem Datum, an dem Neil Armstrong trat zum ersten Mal als meine Startnummer auf den Mond (20. Juli 1969):

Unabhängig davon, wer diesen Code ausführt, lautet die Reihenfolge der erzeugten "Zufallszahlen":

Standardmäßig die Startnummer, die verwendet wird von:

ist die aktuelle Zeit in Millisekunden seit dem 1. Januar 1970. Normalerweise werden dadurch für die meisten Zwecke ausreichend Zufallszahlen erzeugt. Beachten Sie jedoch, dass zwei Zufallszahlengeneratoren, die innerhalb derselben Millisekunde erstellt wurden, dieselben Zufallszahlen generieren.

Seien Sie auch vorsichtig, wenn Sie die Zufallsklasse für Anwendungen verwenden, die über einen sicheren Zufallszahlengenerator verfügen müssen (z. B. ein Glücksspielprogramm). Möglicherweise kann die Startnummer basierend auf der Ausführungszeit der Anwendung erraten werden. Im Allgemeinen ist es für Anwendungen, bei denen die Zufallszahlen absolut kritisch sind, am besten, eine Alternative zum Zufallsobjekt zu finden. Für die meisten Anwendungen, bei denen es nur ein bestimmtes zufälliges Element geben muss (z. B. Würfel für ein Brettspiel), funktioniert es einwandfrei.

instagram story viewer