Generando un número aleatorio entre 1 y 10 Java [duplicado]
Quiero generar un número entre 1 y 10 en Java.
Esto es lo que probé:
Random rn = new Random();
int answer = rn.nextInt(10) + 1;
¿Hay alguna manera de saber qué poner entre paréntesis ()
al llamar al método nextInt y qué agregar?
Como dice la documentación , esta llamada al método devuelve "un valor int pseudoaleatorio distribuido uniformemente entre 0 (inclusive) y el valor especificado (exclusivo)". Esto significa que obtendrás números del 0 al 9 en tu caso. Entonces has hecho todo correctamente sumando uno a ese número.
En términos generales, si necesita generar números desde min
hasta max
(incluidos ambos), escriba
random.nextInt(max - min + 1) + min
La forma estándar de hacer esto es la siguiente:
Proporcionar:
- mín Valor mínimo
- máx Valor máximo
y obtener a cambio un número entero entre mínimo y máximo, 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;
Consulte el JavaDoc correspondiente .
Como lo explica Aurund, los objetos aleatorios creados con poco tiempo de diferencia entre sí 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 del 1 al 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, se creará un número aleatorio de 0 a ese número -1 (a menos que, por supuesto, agregue uno como lo hizo, entonces será de 1 al número que ingresó).