lunes, 12 de diciembre de 2016

Generar un número aleatorio en Java utilizando la clase Random().

Ya vimos cómo crear un número aleatorio utilizando el método random() de la clase MathTutorial Clase Math, ahora veremos cómo podemos crear un número aleatorio pero utilizando la clase Random y haciendo uso de los métodos nextInt(), nextInt(int bound), nextFloat() y nextDouble(), aunque el uso de nextFloat(), nextDouble(), y nextLong() es el mismo, solo cambia el tipo de dato.
Vamos a ver en primer lugar cómo generar un número aleatorio entre 1 y 10.


import java.util.Random;

class NumeroAleatorio{
    public static void main(String[] args) {
        //Creamos objeto de la clase Random
        Random aleatorio = new Random();        
        int numero = aleatorio.nextInt(10)+1;
        System.out.println(numero);
    }
}

Para utilizar la clase Random deberemos de importarla. Luego crearemos un objeto de esta clase y utilizaremos el método nextInt() para crear el número aleatorio. Dentro de este método le pasamos como argumento un entero de valor 10. De esta forma generará un número aleatorio que comprenderá desde el número 0 incluido hasta el número 10 excluido, pero como queremos que comprenda entre el número 1 y 10, ambos incluidos, debemos de poner el +1, así, ahora irá desde el número 1 incluido hasta el número 10 incluido.

Para generar un número aleatorio con los métodos nextFloat() y nextDouble() se hace de una forma parecida a como vimos para generar números aleatorios con la clase MathGenerar números aleatorios con la clase Math.
Cuando utilizamos estos métodos, nos generan un número aleatorio que van desde el 0 incluido hasta el 1 excluido. En el siguiente código fuente podemos observar cómo utilizarlos para crear un número con decimales comprendido entre 1 y 10:


import java.util.Random;

class NumeroAleatorio{
    public static void main(String[] args) {
        //Creamos objeto de la clase Random
        Random aleatorio = new Random();        
        double numDoble = (aleatorio.nextDouble()*10) + 1;
        System.out.println(numDoble);
        float numFlotante = (aleatorio.nextFloat()*10) + 1;
        System.out.println(numFlotante);
       
    }
}

Pero surgiría el problema de que generaría también el número 10 con decimales, por lo que es mayor a 10. Como lo más normal es que se requieran números enteros podemos hacer un casting a los números aleatorios decimales y convertirlos a enteros y, así, conseguir de nuevo el rango de 1 a 10 ambos incluidos.

import java.util.Random;

class NumeroAleatorio{
    public static void main(String[] args) {
        //Creamos objeto de la clase Random
        Random aleatorio = new Random();        
        double numDoble =(int) (aleatorio.nextDouble()*10 + 1);
        System.out.println(numDoble);
        float numFlotante =(int) (aleatorio.nextFloat()*10 + 1);
        System.out.println(numFlotante);       
    }
}

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...