He hecho este código para generar un número random entre 2 números dados con Java:
static int getRandomInt ( int min, int max){
return (int) (Math.round(Math.random() * (max - min))+ min);
}
Nota: El Math.round lo he metido porque el Math.random da un número entre el 0 y el 0.9999999(...), por lo que al pasarlo a entero se me quedaba en 9 el valor más alto y por tanto nunca me salía el número max.
He hecho varias pruebas y funciona, ya que el objetivo es que no dé ningún número por debajo del mínimo o por encima del máximo.
Ahora bien, lo que me mosquea un poco es que he lanzado 4 veces el programa pidiendo 10.000 números cada vez con esto
for (int i=0 ; i<10000 ; i++){
System.out.println(getRandomInt(1,10));
}
y el resultado es el siguiente
Como podéis ver, los números intermedios mantienen un % de aparición bastante constante e igualado, pero los números de los extremos (el 1 y el 10) aparecen aproximadamente la mitad de veces que el resto, por lo cual no estoy dando ni siquiera una aleatoriedad aproximada y no sé si es un problema de mi código o del comando Math.random.
El programa que uso es IntelliJ IDEA Ultimate y el lenguaje es Java.
Gracias!