2010-07-23 11 views
12

Eventuali duplicati:
Java: generating random number in a rangeSpecificare max e min per Random.nextInt()?

voglio generare un int casuale in un intervallo logico. Quindi, per esempio, sto scrivendo un programma per "tirare" un dado con un numero specificato di lati.

public int rollDice() { 
    Random generator = new Random(); 
    return generator.nextInt(sides); 
}

Ora il problema diventa che questo restituirà valori compresi tra i lati e lo zero, inclusiva, che non ha senso perché la maggior parte dei dadi vanno da 1 a 6, 9, ecc Così come posso specificare che dovrebbe nextInt lavoro tra 1 e il numero di lati?

+2

Puoi semplicemente usare return generator.nextInt (sides-1) +1? – Kylar

+1

Penso che vogliate generator.nextInt (lati) +1 – RickNotFred

+0

Sì, mio ​​male :) Ho sempre dimenticato che inclusivo in questo caso significa 0 <= i Kylar

risposta

45

per generare un valore casuale int (distribuzione uniforme) fra da e - (compreso) utilizzare:

from + rndGenerator.nextInt(to - from + 1) 

Nel tuo caso (1..sides):

1 + rndGenerator.nextInt(sides)