Generando un número aleatorio entre 1 y 10 Java

Quiero generar un número entre 1 y 10 en Java.

Esto es lo que intenté:

Random rn = new Random(); int answer = rn.nextInt(10) + 1; 

¿Hay alguna forma de saber qué poner entre paréntesis () cuando se llama al método nextInt y qué agregar?

Como dice la documentación , esta llamada a método devuelve “un valor int pseudoaleatorio, distribuido uniformemente entre 0 (inclusive) y el valor especificado (exclusivo)”. Esto significa que obtendrá números del 0 al 9 en su caso. Entonces has hecho todo correctamente agregando uno a ese número.

En términos generales, si necesita generar números de min a max (incluidos los dos), escriba

 random.nextInt(max - min + 1) + min 

La forma estándar de hacer esto es la siguiente:

Proporcionar:

  • Mínimo valor mínimo
  • max Valor máximo

y obtener a cambio un entero entre min y max, inclusive.

 Random rand = new Random(); // nextInt as provided by Random is exclusive of the top value so you need to add 1 int randomNum = rand.nextInt((max - min) + 1) + min; 

Vea el JavaDoc relevante.

Como explicó Aurund, los objetos aleatorios creados en un corto período de tiempo tenderán a producir resultados similares, por lo que sería una buena idea mantener el objeto aleatorio creado como un campo, en lugar de un método.

Esto funcionará para generar un número 1 – 10. Asegúrese de importar Aleatorio en la parte superior de su código.

 import java.util.Random; 

Si quieres probarlo prueba algo como esto.

 Random rn = new Random(); for(int i =0; i < 100; i++) { int answer = rn.nextInt(10) + 1; System.out.println(answer); } 

Además, si cambia el número entre paréntesis, creará un número aleatorio de 0 a ese número -1 (a menos que agregue uno por supuesto como el que tiene, será desde 1 hasta el número que ingresó).