4124 Stimmen

Wie erzeuge ich in Java zufällige Ganzzahlen innerhalb eines bestimmten Bereichs?

Wie generiere ich eine zufällige int Wert in einem bestimmten Bereich?

Ich habe Folgendes versucht, aber das funktioniert nicht:

Versuch 1:

randomNum = minimum + (int)(Math.random() * maximum);

Fehler: randomNum kann größer sein als maximum .

Versuch 2:

Random rn = new Random();
int n = maximum - minimum + 1;
int i = rn.nextInt() % n;
randomNum =  minimum + i;

Fehler: randomNum kann kleiner sein als minimum .

0 Stimmen

Wenn Sie viele Zufallszahlen benötigen, empfehle ich die Klasse Random in der API nicht. Sie hat einfach eine zu kleine Periode. Versuchen Sie die Mersenne-Twister stattdessen. Es gibt eine Java-Implementierung .

47 Stimmen

Bevor Sie eine neue Antwort schreiben, bedenken Sie, dass es bereits mehr als 65 Antworten auf diese Frage gibt. Bitte stellen Sie sicher, dass Ihre Antwort Informationen enthält, die nicht in den vorhandenen Antworten enthalten sind.

13voto

ganesh Punkte 149
rand.nextInt((max+1) - min) + min;

Das funktioniert gut.

10voto

private static Random random = new Random();    

public static int getRandomInt(int min, int max){
  return random.nextInt(max - min + 1) + min;
}

OU

public static int getRandomInt(Random random, int min, int max)
{
  return random.nextInt(max - min + 1) + min;
}

0 Stimmen

Wenn max und min groß sind, verursacht dies Überlaufprobleme und führt zu falschen Ergebnissen.

8voto

Shital Ghimire Punkte 103
Random rng = new Random();
int min = 3;
int max = 11;
int upperBound = max - min + 1; // upper bound is exclusive, so +1
int num = min + rng.nextInt(upperBound);
System.out.println(num);

7voto

Divyesh Kanzariya Punkte 3241

Wenn Sie bereits Commons Lang API 2.x oder der neuesten Version gibt es eine Klasse für die Erzeugung von Zufallszahlen RandomUtils .

public static int nextInt(int n)

Gibt einen pseudozufälligen, gleichmäßig verteilten int-Wert zwischen 0 (einschließlich) und dem angegebenen Wert (ausschließlich) aus der Math.random()-Folge zurück.

Parameter: n - der angegebene exklusive Max-Wert

int random = RandomUtils.nextInt(1000000);

Anmerkung: In RandomUtils haben viele Methoden zur Erzeugung von Zufallszahlen

0 Stimmen

Damit ist die Frage nicht beantwortet: "...innerhalb eines bestimmten Bereichs..."

7voto

Musfiq Shanta Punkte 702

Int randomNum = 5+(int)(Math.random() * 5);

Bereich 5-10

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X