GENERAR NUMEROS ALEATORIOS EN JAVA | DOUBLE Y INT

En este articulo mostrare como generar o crear números aleatorios en Java. El proceso para generar o crear números random o aleatorios en Java en igual para Double (decimales) o Int (enteros).

Tabla de contenido
  1. ¿Como crear o generar números aleatorios en Java?
  2. Math.Radom()
    1. Ejemplos
  3. La clase Random
    1. Ejemplos
  4. Toturial: Números aleatorios en Java
  5. Código en Java

¿Como crear o generar números aleatorios en Java?

Los números aleatorios en Java son de mucha utilidad y es necesario entender como crearlos.

En el siguiente vídeo muestro como crear números aleatorios en Java. Los números aleatorios se pueden crear de tipo Double o Int.

Existen dos formas principales de crear numeros aleatorios.

  • Haciendo uso de la clase Math y luego llamando el random. Ej: Math.Radom()
  • Instanciando la clase Radom. Ej Radom a = New Random (); y donde nosotros necesitemos un numero aleatorios llamamos a y generamos un numero.

Veamos los dos casos para generar numeros al azar en un programa en Java.

Math.Radom()

La llamada a Math.random() devuelve un número aleatorio entre 0.0 y 1.0, excluido este último valor, es decir, puede devolver 0.346442, 0.2344234, 0.98345,….
En muchas de nuestras aplicaciones no nos servirá este rango de valores. Por ejemplo, si queremos simular una tirada de dado, queremos números entre 1 y 6 sin decimales. Debemos echar unas cuentas para obtener lo deseado.
En primer lugar, miramos cuántos valores queremos. En nuestro caso del dado son 6 valores, del 1 al 6 ambos incluido. Debemos entonces multiplicar Math.random() por 6. Si quisieramos valores entre dos números cualquiera ambos incluídos, por ejemplo, 5 y 10, la cuenta sería (maximo-minimimo)+1, es decir, (10-5)+1 = 6, también multiplicaríamos por 6.

Recomendado:   Nuevas políticas para subir aplicaciones a la Google Play Console

Ejemplos

Math.random()6 // Esto da valores de 0.0 a 6.0, excluido el 6.0

Math.random()6 + 1 // Esto da valores entre 1.0 y 7.0 excluido el 7.0

int valorEntero = Math.floor(Math.random()(N-M+1)+M); // Valor entre M y N, ambos incluidos.
double valorAleatorio = Math.random()*(N-M)+M;

Nota: recuerda que el valor N queda excluido y no saldrá nunca.

La clase Random

La clase java.util.Random debemos instanciarla, a diferencia del método Math.random(). A cambio, tendremos bastantes más posibilidades.
Podemos usar un constructor sin parámetros o bien pasarle una semilla. Si instanciamos varias veces la clase con la misma semilla, tendremos siempre la misma secuencia de números aleatorios.

Ejemplos

Random r1 = new Random();
Random r2 = new Random(4234);
Random r3 = new Random(4234); // r2 y r3 darán la misma secuencia.

Lo más fácil es usar el constructor sin parámetros, que normalmente dará secuencias distintas en cada instancia. De todas formas, una manera de obtener una semilla que sea distinta cada vez que ejecutemos nuestro programa puede ser obtener el tiempo actual en milisegundos con System.currentTimeMillis(), que dará números distintos salvo que hagamos la instacia justo en el mismo instante de tiempo.

Con esta clase, una vez instanciada, nuestro problema del dado sería bastante más sencillo, usando el método nextInt(int n), que devuelve un valor entre 0 y n, excluido n.

Random r = new Random();
int valorDado = r.nextInt(6)+1;  // Entre 0 y 5, más 1.

También tenemos funciones que nos dan un valor aleatorio siguiendo una curva de Gauss o que nos rellenan un array de bytes de forma aleatoria. Y por supuesto, el nextDouble() que devuelve un valor aleatorio entre 0.0 y 1.0, excluido este último.

Recomendado:   APP INVENTOR: CREAR APLICACION LINTERNA PARA ANDROID

Toturial: Números aleatorios en Java

En el siguiente vídeo se aborda el tema de los números random o al azar en java.

Código en Java

Este es el código Java usado durante el vídeo para crear los números aleatorios.

public class Aleatorios {
    //Math.random()*6   // Esto da valores de 0.0 a 6.0, excluido el 6.0
    //Math.random()*6 + 1   // Esto da valores entre 1.0 y 7.0 excluido el 7.0
    //Math.floor(Math.random()*6+1); // para conseguir un entero
    //Math.floor(Math.random()*(N-M+1)+M);  // Valor entre M y N, ambos incluidos.
    //Math.random()*(N-M)+M; // para enteros

public void generarAleatorios () {
int a= (int) Math.floor(Math.floor(Math.random()*(210-150+1)+150));
System.out.println(a);
}

public static void main(String[] args) {
Aleatorios mostrar = new Aleatorios ();
mostrar.generarAleatorios();
}
}

Subir