ich tun würde:
int possibilities = 7;
int x = ThreadLocalRandom.current().nextInt(possibilities);
int y = ThreadLocalRandom.current().nextInt(possibilities - 1);
if (y >= x)
y++; // adding 1 to y here means that y can't equal x
Auf diese Weise y
gleich wahrscheinlich ist eine der ganzen Zahlen im Bereich 0
-possibilities - 1
außer x
sein.
ThreadLocalRandom.current().nextInt(possibilities);
ist nur eine alternative Möglichkeit zum Generieren einer Zufallszahl in einem Bereich. ThreadLocalRandom.current()
gibt nur eine Instanz der Random
Klasse, und nextInt
ist ein Verfahren zur Herstellung von Zufallszahlen in einem Bereich (ich bevorzuge dies zu der Math.random
Ansatz).
Sie können diese Lösung jedoch leichter verstehen, die Ihrer ursprünglichen Frage ähnlicher ist.
int possibilities = 7;
int x = (int) (Math.random() * possibilities);
int y = (int) (Math.random() * (possibilities - 1));
if (y >= x)
y++;
Wiederholen Sie für einen ganzzahligen Bereich einen weiteren Rando m Nummer, bis es nicht gleich 'x' ist. (Aber dann ist Ihre "zufällige Reihenfolge" nicht mehr zufällig!) – laune
Mögliches Duplikat von [Zufallszahlen in Java erhalten] (http://stackoverflow.com/questions/5887709/getting-random-numbers-in-java) –
Was Sie sagen, ist eine neue Zufallszahl zu generieren und es wird nicht gleich 'x' sein. Das ist nicht die Lösung und die Chancen stehen gut, dass ich die gleiche Nummer bekomme. Was ich will, ist eine Nummer zu drucken, die nicht "x" ist und innerhalb dieses gegebenen Bereichs, d. H. "0-2". – Gawar