Generar número aleatorio en Java Math.random()




Si queremos generar un número aleatorio en java lo que haremos será hacer uso del método Math.random(). Éste método devuelve un valor aleatorio de tipo double con signo positivo, mayor o igual a 0.0 e inferior a 1.0. Es útil si queremos que en nuestras aplicaciones suceda algo dependiendo al valor aleatorio generado. También es posible aumentar el rango del valor aleatorio, de manera que no sea solo mayor o igual a 0.0 e inferior a uno, sino que sea mayor o igual a 0 y menor a un número que queramos. ¿Como se haría? solo debemos multiplicar el método Math.random() por dicho número. 

Vamos generar 5 valores aleatorios en un rango mayor o igual que 0 y menor a 5 con un ciclo for y veamos los resultados:


public class NumeroAleatorio {
static double numero;

public static void main(String args[]){
for(int i = 0; i < 5; i++){

 numero = Math.random() * 5; 
 System.out.print(numero);
 System.out.println("");
  } 
 }
}

También podemos generar valores enteros aleatorios, imaginemos que tenemos un dado, cuando lo lanzamos hay 6 posibilidades, puede ser 1,2...6. Simulemos un dado con el Math.random 



public class NumeroAleatorio {
static int numero;

public static void main(String args[]){

 numero = (int) (Math.random() *6) + 1; 
 System.out.print(numero);
 System.out.println(""); 
 }
}

En éste caso la variable numero será del tipo entero, como el método Math.random retorna un valor del tipo double haremos uso del operador cast (int) . El operador cast lo que hace es forzar a un dato, variable o expresión a convertirse en un nuevo tipo de dato, en nuestro caso en un entero. Es importante saber que la operación (int) (Math.random() *6) retornara un valor entero mayor o igual que 0 y menor que 6. Pero nuestro dado necesita un valor entre 1 y 6 por esto sumamos 1 a nuestra operación (int) (Math.random() *6) + 1 . De ésta manera podremos simular un dado en java. 

¿Como sería si quiero que ocurra algo dependiendo del valor generado? Lo que haremos será hacer uso de los operadores relacionales. Generemos un valor aleatorio en que si éste es menor que 0.5 diga Hola mundo! y si es menor que 1 diga  Hello World!.


public class NumeroAleatorio {
static double numero;

public static void main(String args[]){

 numero = Math.random();
 if(numero < 0.5)
  System.out.println("Hola mundo!");
 else
  System.out.println("Hello World!"); 
 }
}

¿Y si queremos usar el Math.random junto a una sentencia switch se podría? ¡Seguro que si!


public class NumeroAleatorio {
static int numero;

public static void main(String args[]){

 numero = (int) (Math.random() * 5) + 1;
 switch(numero){
 case 1:
  System.out.println("Venezuela");
 break;
 case 2:
  System.out.println("Argentina");
  break;
 case 3:
  System.out.println("Colombia");
  break;
 case 4:
  System.out.println("Ecuador");
  break;
 case 5:
  System.out.println("Peru");
  break;
 }
 
 }
}

Lo que hacemos es nuevamente utilizar el operador cast para convertir el valor generado en un entero, luego hacemos una sentencia switch con 5 posibilidades, en nuestro caso imprimimos en pantalla el nombre de un país dependiendo del número generado. 

También te podría interesar:
60+ Manuales y libros sobre programación para descargar
Medir el tiempo de ejecución en Java
De sistema decimal a sistema binario en c++ y Java
3 libros sobre programacion orientada a objetos

¡Ayúdanos a seguir creciendo, comparte en tus Redes Sociales!

Siguiente
« Prev Post
Anterior
Next Post »

7 comentarios

Click here for comentarios
Anónimo
admin
12 de octubre de 2014, 17:43 ×

Gracias :)

Reply
avatar
14 de octubre de 2014, 20:58 × Este comentario ha sido eliminado por el autor.
avatar
11 de noviembre de 2014, 17:25 ×

como seria un programa que genere numeros aleatorios sin usar random?

Reply
avatar
Anónimo
admin
26 de febrero de 2015, 16:44 ×

Esa es buena!!

Reply
avatar
Pfont
admin
20 de marzo de 2015, 4:28 ×

Por si resulta de su interés o de alguno de sus lectores le dejo un enlace a un generador de números aleatorios.
http://informatica-pfont.blogspot.com/2011/07/numeros-aleatorios.html

Reply
avatar
Brandan
admin
25 de noviembre de 2016, 12:48 ×

¿Cómo sería el código para saber la frecuencia con la que sale cada cara del dado?

Reply
avatar