2016-03-21 8 views
-2

Wie drucke ich eine Nummer, die nicht "x" ist. Aber innerhalb des gegebenen Bereichs.Wie erstelle ich eine Zufallszahl und drucke eine andere Zahl?

Es gibt einige Verwirrung, dieses Problem zu verstehen, also werde ich es mit Hilfe eines Beispiels erklären.

Es sei ‚x‘ gleich 2

Jetzt habe ich eine Reihe drucken möchten, die zum Beispiel 1, nicht gleich ‚x‘ ist, die im Bereich oben angegeben ist.

+0

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

+0

Mögliches Duplikat von [Zufallszahlen in Java erhalten] (http://stackoverflow.com/questions/5887709/getting-random-numbers-in-java) –

+0

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

Antwort

0

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++; 
+0

Danke. Das hat wirklich funktioniert, da ich neu in Java bin, ist es schwer für mich zu verstehen, was du geschrieben hast. Es wird eine große Hilfe sein, wenn Sie es mir kurz erklären können. – Gawar

+0

Ich denke, mit == ist passender in 'if (y> = x)' – Gawar

+0

@SarthakGaur Nein, weil dann der Wert x + 1 ist doppelt so wahrscheinlich abgeholt werden (Sie könnten entweder x + 1 an erster Stelle auswählen oder wähle x an erster Stelle und füge 1) hinzu. Die Bedingung "y> = x" ist ein guter Weg, um sicherzustellen, dass alle Werte außer x gleich wahrscheinlich sind. –

0

Probieren Sie die Zufällige Klasse

Random r = new Random(); 
int max = 10; 
int min = 1; 
int x = r.nextInt((max - min) + 1) + min;// I have generated a random number 
System.out.println(x);// This will print the random number 
0

Ich nehme an, Sie eine Zufallszahl drucken möchten gibt innerhalb der Reichweite in Java Sie Ihre Linie

int x = (int) (Math.random() *3); 

mit diesem Code ersetzen

Random rand; 
int x = rand.nextInt((max - min) + 1) + min; 
0

Gegeben Code:

int x = (int) (Math.random() *3); 
int y = (int) (Math.random() *3); 
if(y != x){ 
    System.out.println(x); 
} 
Verwandte Themen