Guía y comprobaciones
Un intervalo pequeño
Para obtener un entero entre 10 y 15 incluidos, puedes generar seis resultados desde cero y sumar diez. El límite de Random.nextInt(bound) es exclusivo.
import java.util.Random;
public class Ejemplo {
public static void main(String[] args) {
Random azar = new Random(7);
for (int i = 0; i < 4; i++) {
int valor = azar.nextInt(6) + 10;
System.out.println(valor >= 10 && valor <= 15);
}
}
}
La salida son cuatro valores true: la prueba comprueba el intervalo, no que haya aparecido cada número. La semilla fija permite repetir una secuencia durante un ejercicio; no la uses como una contraseña secreta.
Límites e igualdad
nextInt(6) puede devolver 0, 1, 2, 3, 4 o 5. Un límite de cero o negativo no es válido para esta variante. Si calculas max - min + 1 con extremos muy grandes, la operación puede desbordar un entero antes de llamar al generador. El ejemplo utiliza un intervalo pequeño precisamente para no ocultar ese problema.
No redondees un número decimal para fabricar un reparto entero sin analizar los extremos. Los intervalos interiores y los extremos pueden recibir longitudes distintas y producir una distribución que no pretendías.
Aleatorio no significa único
Dos extracciones pueden dar el mismo resultado. Para barajar una colección o elegir valores sin reposición, utiliza una estructura y un algoritmo que representen ese requisito. Añadir un bucle que repite hasta no encontrar duplicados puede resultar lento cuando el espacio disponible se agota.
Datos de seguridad
Random no es el generador apropiado para tokens, contraseñas o secretos. Para material que necesita resistencia a predicción, consulta SecureRandom y el diseño de seguridad de la aplicación. Un número entre 10 y 15 tiene muy pocas posibilidades aunque proceda de un generador criptográfico.
Para probar la función, revisa que todos los resultados estén dentro del intervalo, incluye el caso de un solo valor y trata los extremos no válidos. Un muestreo corto no demuestra por sí solo que un generador tenga una distribución correcta.
Preguntas frecuentes
¿nextInt incluye su límite?
En nextInt(bound), no. El resultado está entre cero incluido y bound excluido.
¿Random sirve para un token de acceso?
No es la elección adecuada para secretos. Usa una solución criptográfica como SecureRandom y un espacio de resultados suficiente.
Continúa con una guía relacionada
Documentación oficial
Fuentes consultadas
Fuentes y referencias
Consulta referencias útiles para ampliar o contrastar esta guía.
Siguiente lectura
Guias relacionadas para continuar
Si quieres seguir con el mismo tema, aqui tienes paginas cercanas que amplian la tecnica, comparan variantes o te llevan a la siguiente rutina.