2016-03-24 21 views
0

Ich habe Probleme mit dem Zufallszahlengenerator, oder habe Probleme, das Konzept vollständig zu verstehen. Ich möchte 20 Zufallszahlen von 0 bis x generieren.Verwenden von Zufallsgenerator Java

Random ranNum= new Random(); 
int n = ranNum.nextInt(x) + 0; 

Würde ich das so machen?

+0

1) Das sieht nach Java aus, stimmt das? Wenn ja, füge es zu deinen Tags hinzu. 2) Möchten Sie, dass das Ergebnis "x" enthält oder nicht? 3) Was denkst du wird erreicht durch Hinzufügen von Null? 4) Hast du versucht, was du vorgeschlagen hast? Wenn nicht, warum nicht, und wenn ja, was hat es nicht getan, worauf Sie gehofft hatten zu sehen? – pjs

+0

Sorry, die obere Grenze ist inklusive – cargoboom

+0

Ich weiß wirklich nicht, warum ich die Null hinzugefügt habe, ich habe es in meinem Programm ausprobiert und was ich geschrieben habe wirklich nicht funktioniert. – cargoboom

Antwort

1

Im Folgenden wird eine ArrayList von Werten zwischen 0 und x, inklusive schaffen, dass x unter der Annahme, wurde zuvor als positiv int definiert.

ArrayList<Integer> randNums = new ArrayList<Integer>(); 
Random r = new Random(); 
for(int i = 0; i < 20; ++i) { 
    randNums.add(r.nextInt(x + 1)); 
} 

Sie können dann die Werte verwenden, aber Sie (Druck oder in nachfolgenden Berechnungen) wollen, indem sie durch die ArrayList laufen.

0

Führen Sie diesen Code:

int x=100,n=0; 
Random ranNum= new Random(); 
for(int i=0;i<20;i++) 
{ 
    n = ranNum.nextInt(x); 
    System.out.println(n); 
} 

X ist der Bereich der Zufallszahl. dieses Programm erzeugt Zufallszahl zwischen 0 bis 100.If mögen Sie einen Minimalwert angeben, als Sie diese Zeile in der Schleife versuchen:

n = ranNum.nextInt(x-min)+min; 
0

Ich mag Math.random(), gibt es einen doppelten Wert mit einem positives Vorzeichen, größer als oder gleich 0.0 und kleiner als 1.0.

public int getNumber(int max) { 
    return (int) (Math.random() * max); //returns an int between 0 and max 
} 

public void main() { 
    for(int i = 0; i < 20; i++) { 
     System.out.println(getNumber(100)); 
    } 
} 

Prints 20 Zahlen zwischen 0 und 100, für weitere Informationen über Math.random() https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html

+0

Ihre erste Aussage ist falsch, genau wie der Kommentar in Ihrer 'getNumber' Methode. Die obere Grenze für 'Math.random()' ist nicht 0.9, und das Multiplizieren mit 'max' und das Umwandeln in' int' ergeben niemals'max'. – pjs

+0

ja. Wenn Sie Zahlen zwischen 1-10 benötigen, verwenden Sie (Math.random() * 10) + 1. Wenn Sie Zahlen zwischen 0-9 möchten, verwenden Sie (Math.random() * 10), wenn Sie Zahlen zwischen 0-10 möchten , benutze (Math.random() * 10 + 1) + 1. wo 10 ist max. Deshalb habe ich es in einer Methode platziert. Ich weiß nicht, was Sie wollen –

+0

Mit 'nextInt' wäre es besser, dafür ist es da. Beachten Sie * in Ihrer Antwort *, dass Dinge anders gehandhabt werden müssen, je nachdem, ob die obere Grenze inklusiv oder exklusiv ist, würde es eine bessere Antwort geben. Falsche Aussagen wie "Math.random()' ", die ein Double zwischen 0.0 und 0.9 ergeben, wären am besten. – pjs

0

Damit erstellen Sie 20 Zufallszahlen. Ich habe immer noch nicht verstanden, ob du Duplikate in deinen Zufallszahlen haben willst oder nicht. Nun, versuchen Sie folgendes:

static Random r = new Random(); 
private static final int number = 5; 

public static void main(String[] args) { 
    for(int i =0; i<20;i++){ 
     System.out.println(r.nextInt(number)); 
    } 

} 
0

Hängt davon ab, wofür Sie die Nummern benötigen.

sie zu drucken, würden Sie:

Random randNum = new Random(); 
    for(int x = 0; x < 20; x++){ 
     System.out.println(randNum.nextInt(20)); 
    } 

Put in Arraylist und ausdrucken:

ArrayList<Integer> list = new ArrayList<Integer>(); 
    Random randNum = new Random(); 
    for(int x = 0; x < 20; x++){ 
     list.add(randNum.nextInt(x)); //must set x to set maximum number it can be 
    } 
    for(int a : list) 
     System.out.println(a);