2009-05-08 5 views

Antwort

3

Wie Marc sagt, nur Random.nextInt(int) anpassen, mit ein paar Gesundheits-Checks:

public static int nextInt(Random rng, int lower, int upper) { 
    if (upper < lower) { 
     throw new IllegalArgumentException(); 
    } 
    if ((long) upper - lower > Integer.MAX_VALUE) { 
     throw new IllegalArgumentException(); 
    } 
    return rng.nextInt(upper-lower) + lower; 
} 
+0

Warum ist das notwendig? if ((long) oberer - unterer> Integer.MAX_VALUE) { wirf neue IllegalArgumentException(); } – MahdeTo

+0

Dank Jon, Das könnte für mich funktionieren. – Murali

+0

@MahdeTo: Betrachten Sie nextInt (Rng, Integer.MIN_VALUE, Integer.MAX_VALUE) –

0

Nun, können Sie Random.nextInt(int) mit Angabe der Bereich verwenden, und dann nur den Mindestwert hinzufügen? dh rand.nextInt (12) + 5

+0

rand.nextInt (max) + min ist falsch; Dies gibt ganze Zahlen größer als max zurück? – dfa

+0

Deshalb habe ich das Wort ** Bereich ** verwendet, nicht max. –

2

nicht, aber Sie können es auf diese Art und Weise haben:

public static int randomInRange(int min, int max){ 
     return min+Random.next(max-min); 
} 
0

Call to Random.Next(x, y) kann wie Random.nextInt(y - x) + x;