Ich schrieb eine Demo zu testen java.util.Random
und ich möchte eine wiederholte Liste der gleichen 5 Zahlen zu erzeugen, aber ich bekomme den gleichen Wert, wenn Sie verschiedene Samen. In meinem Programm reichen die Samen von 0 bis 4. Soweit ich weiß, erzeugen verschiedene Samen unterschiedliche Werte und derselbe Samen erhält den gleichen Wert. Also ich denke, das Ergebnis wird eine sich wiederholende Liste der gleichen 5 Zahlen sein. Aber die tatsächlichen Werte sind alle gleich. Was ist falsch an meinem Code? Kann mir das jemand sagen?Java Random.nextInt (int) den gleichen Wert zurückgeben, wenn verschiedene Samen gesetzt
import java.util.Random;
public class Main {
public Main() {
}
public static void main(String[] args) {
for (int i = 0 ; i <= 255; i++)
{
String hex = Integer.toHexString(randInt(0, 255, i % 5));
System.out.println(hex);
}
}
private static Random rand = new Random();
public static int randInt(int min, int max, long seed) {
rand.setSeed(seed);
System.out.println("seed:" + seed);
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
}
Das Ergebnis ist:
seed:0
bb
seed:1
bb
seed:2
bb
seed:3
bb
seed:4
bb
seed:0
bb
seed:1
bb
seed:2
bb
seed:3
bb
seed:4
bb
seed:0
bb
seed:1
bb
seed:2
bb
seed:3
bb
seed:4
bb
seed:0
bb
seed:1
...
...
...
Die wahrscheinlichere Antwort ist, dass es einen Fehler in Ihrem Code gibt. Sie sollten die verschiedenen Teile isolieren und testen, ob Sie tun, was Sie denken, dass Sie tun. – Silverclaw
nicht sicher, was Sie erreichen möchten, aber es ist nicht, wie Sie Random verwenden. Sie legen einmal den Startwert fest und nehmen dann Zahlen daraus. – mlecz
Versuchen Sie einfach 'int randomNum = rand.nextInt (max) + min;' Es ist auch erwähnenswert, dass jedes Mal, wenn Sie das Seed ändern, es zurückgesetzt wird, so dass Sie in diesem Fall eine Wiederholungsliste der gleichen 5 Zahlen erhalten. – Andrew