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