/ / Wie kann ich einen Random-Startwert in Java wiederverwenden, damit ich die gleichen Werte wieder nextInt ()? - Java, zufällig

Wie benutze ich einen Random-Seed in Java, so dass ich nextInt () dieselben Werte wieder? - Java, zufällig

Ich rufe zuerst mein randomGenerator-Objekt als solches auf: Random randomGenerator = new Random(5); for(int i=0; i<intObjects.length; i++){ intObjects[i]=randomGenerator.nextInt(Integer.MAX_VALUE); }

Wenn ich nun mein Array neu initialisieren möchte (nachdem ich einige Änderungen vorgenommen und einige Tests durchgeführt habe), wie soll ich dies dann tun? Wie kann ich den Samen wiederverwenden?

Antworten:

6 für die Antwort № 1
Random randomGenerator = new Random(5);

Der neue Zufall (5); So haben Sie Ihren Generator gesät. Wenn Sie dies wiederverwenden, erhalten Sie die gleichen Nummern wie zuvor.

randomGenerator = new Random(5);

ist die Lösung. (Ein neues Objekt wird nicht benötigt)


2 für die Antwort № 2

Fix den Samen, das ist es.

  Random randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));
randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));
randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));
randomGenerator = new Random(5);
System.out.println(randomGenerator.nextInt(Integer.MAX_VALUE));

Ergebnis:

1568779487

1568779487

1568779487

1568779487


1 für die Antwort № 3

Die Saat in Ihrem Code ist die lange als Argument an die Konstrukteur : 5.

Jedes Mal, wenn Sie das ausführen, erhalten Sie die gleichen Werte.


0 für die Antwort № 4

Sie müssen nur Ihren Samen speichern und Ihren Zufallsgenerator zu einer neuen Zeit starten. Schauen Sie sich diesen Code an:

    // Generate one uniq seed
long seed = System.currentTimeMillis();

// Create your random with the seed
Random randomGenerator = new Random(seed);

// Use it
for (int i = 0; i < intObjects.length; ++i) {
intObjects[i]=randomGenerator.nextInt(Integer.MAX_VALUE);
}

// Do what you want
// ...

// Regenerate your random
randomGenerator = new Random(seed); // Maybe you can also use randomGenerator.setSeed(seed)

// Use it again
for (int i = 0; i < intObjects.length; ++i) {
intObjects[i]=randomGenerator.nextInt(Integer.MAX_VALUE);
}