2010-07-23 16 views
12

Duplicar posible:
Java: generating random number in a rangeEspecifique max y min para Random.nextInt()?

Quiero generar un int aleatorio en un rango lógico. Entonces, digamos, por ejemplo, estoy escribiendo un programa para "tirar" un dado con un número específico de lados.

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

Ahora el problema se convierte en que esto va a devolver valores entre los lados y cero, incluido , que no tiene sentido porque la mayoría de los dados van de 1 a 6, 9, etc. Entonces, ¿cómo puedo especificar que debe nextInt trabajar entre 1 y el número de lados?

+2

¿Puedes usar return generator.nextInt (sides-1) +1? – Kylar

+1

Creo que te refieres a generator.nextInt (lados) +1 – RickNotFred

+0

Sí, es malo :) Siempre me olvido de que inclusivo en este caso significa 0 <= i Kylar

Respuesta

45

para generar un valor aleatorio int (distribución uniforme) entre de y - (inclusive) usar:

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

En su caso (1..sides):

1 + rndGenerator.nextInt(sides) 
Cuestiones relacionadas