domingo, 4 de diciembre de 2016

Capítulo 86: Elementos al azar en Java


Diario de un programador. Día 188

Elementos al azar en Java


La clase Random, del paquete java.util, a diferencia del método static de la clase Math(que solamente produce valore de tipo double), es capaz de producir valores de tipo boolean, float, byte, double, int, long y gaussianos.
Para usar esta clase, primer se debe importar. Esto se logra de la siguiente manera:

import java.util.Random;

Luego, la forma de crear el objeto es similar al utilizado para crear un objeto Scanner. Esto se logra de la siguiente manera:

Random azar = new Random();

Ya con esto creado podemos generar todos los tipos de números aleatorios que se mencionaron anteriormente, pero en este caso para simplificar las cosas, vamos a probar con números enteros. Por ejemplo, si hacemos lo siguiente:
int numeroAzar = azar.nextInt();
la variable numeroAzar podría tener un número entre  –2.147.483.648 y 2.147.483.647. Si quisiéramos que nuestro número se encuentre en un rango menor, digamos entre los primeros 10 números, entonces se puede hacer de esta otra manera:
int numeroAzar = azar.nextInt(10);
Al agregar un argumento a nextInt, estamos diciendo que nuestro número sea escogido entre el cero y el nueve. No se incluye el número ingresado en el argumento.
Vamos a ver un pequeño ejemplo:
import java.util.Random;

public class azar{
  public static void main(String[]args){
 
  Random azar = new Random();
  int numeroAzar = azar.nextInt(10);

  System.out.println("El numero escogido es: " + numeroAzar);
  }
}

¿Cómo crearíamos un arreglo con números al azar? Se me ocurre la siguiente alternativa:
Creo un arreglo de 10 elementos y una variable de tipo entero llamada numAzar, en esta última variable se irán generando los números al azar.
Para lograr esto lo que hice fue crear un ciclo for y dentro de él puse numAzar, la cual por cada ciclo irá generando un número al azar. Este número generado es ingresado al arreglo mientras el ciclo continua con su trabajo.
Al finalizar, se crea otro ciclo for, el cual se encarga de mostrar el contenido del arreglo.

import java.util.Random;
public class azar{
  public static void main(String[]args){
 
  //Se crea un objeto random, un arreglo y variables   
  Random azar = new Random();
  int arreglo[] = new int[10];
  int numAzar, i;
 
  //Se crean 10 numeros al azar y se guardan
  //en un arreglo

  for(i = 0;i < 10; i++){
      numAzar = azar.nextInt(10);
      arreglo[i] = numAzar;
  }

  //se muestran los numeros del arreglo
  for(i = 0;i < 10; i++){
      System.out.println("[" + arreglo[i] + "]");
  }
  System.out.println("");
  }
}


Luego de  ejecutar, este es el resultado:


Los elementos al azar se pueden utilizar en múltiples tareas, como por ejemplo, el reproductor de música lo utiliza para poder escoger una canción al azar y así evitar estar escuchando siempre las canciones en el mismo orden.
A continuación pondré un pequeño programa que escoge un número al azar y nosotros trataremos de encontrar ese número. Al final nos dirá cuántos intentos nos tomó.
Este programa consta de dos clases.

//clase pricipal
import javax.swing.JOptionPane;

public class Inicio{
  public static void main(String []args){
     
    String numero;
    int numeroConvertido, intentos = 0;
    Metodos datos = new Metodos();
   
    do{
        //solicitamos un numero en formato String, para que pueda
        //ser aceptado por JOptionPane
        numero = JOptionPane.showInputDialog("Ingresa un numero:");
        //el numero es convertido a int para poder pasarlo como
        //argumento al metodo comparaResultado
        numeroConvertido = Integer.parseInt(numero);
    
        //Se envian los datos al metodo comparaResultado y se recupera
        //un resultado
        JOptionPane.showMessageDialog(null, datos.comparaResultado(numeroConvertido));
        //por cada ciclo agregamos un intento
        intentos++;
       
    //se repetira el ciclo hasta que encontremos el numero   
    }while(numeroConvertido != datos.azar());
   
    //saliendo del ciclo se muestra el numero de intentos
    JOptionPane.showMessageDialog(null, "Nro. de intentos: " + intentos);
  }//fin main
}//fin class

//clase metodos
import java.util.Random;
public class Metodos{
   
  Random azar = new Random();
  private int numeroIngresado;
  private int numAzar;
 
  //constructor
  public Metodos(){
    numeroIngresado = 0; 
    numAzar = azar.nextInt(10);
  }
  //metodo que compara el numero ingresado
  //con el numero al azar
  public String comparaResultado(int num){

    numeroIngresado = num;

    if (numeroIngresado == numAzar){
        return "Son iguales";   
    }//fin if   

    else if(numeroIngresado > numAzar){
        return "El numero ingresado es mayor";   
    }//fin if

    else{
        return "El numero ingresado es menor";
    }//fin if

  }//fin metodo
 
  //para recuperar el numero al azar
  public int azar(){
      return numAzar;
  }
}//fin class

Esto es todo por ahora. Saludos


Gustavo J. Cerda Nilo
Diciembre 2016



No hay comentarios:

Publicar un comentario

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...