El elemento de azar, ya sea mediante un juego u otra
aplicación de este, puede ser introducido a Java mediante un objeto de la clase Random, el cual es importado del paquete java.util.*; cuya carpeta «util» esta llena de utilerías necesarias para el calculo de datos, etc. O mediante el método static llamado Random, de la clase Math.*; este método únicamente produce valores de tipo double entre 0.0 <= x <1.0, donde x es el valor regresado por el método. Cabe destacar que la clase Random, proporciona un generador de números aleatorios mucho más flexible, que la función estática Random de la clase Math. Importar y crear objetos de la clase Random
Para crear una secuencia de numero aleatorios, debemos seguir
los siguientes pasos: 1._Proporcionar a nuestro programa información acerca de la clase Random, es decir, importar la clase desde la carpeta util; escribiendo la siguiente sentencia: import.java.util.Random; 2._ Crear la instancia u objeto de dicha clase, así: Random R = new Random(); donde R es el objeto. >> Existen dos constructores para crear el objeto, el anterior genera números aleatorios, la otra inicializa la generación con un datos tipo Long, así: Random R = new Random(1234 L); El sufijo L sirve de referencia nada más, pues automáticamente se el valor se promociona a Long. 3._ Llamar a una de las funciones miembro que generan un número aleatorio, entre ellas podemos definir: a) Podemos cambiar la inicialización de la generación de los números aleatorios en cualquier momento, llamando a la función miembro setSeed, así: aleatorio.setSeed(3816); Así mismo podemos generar numeros aleatorios de 4 formas diferentes: b) Generando un número aleatorio entero de tipo int, así: int aleatorio = R.nextInt(4); c) Generando un número aleatorio entero de tipo long, así: int aleatorio = R.nextLong(); d) Generando un número aleatorio de tipo float entre 0.0 y 1.0, aunque siempre menor que 1.0, así: float aleatorio = R.nextFloat(); e) Generando un número aleatorio de tipo double entre 0.0 y 1.0, aunque siempre menor que 1.0, así: double aleatorio = R.nextDouble(); Dado la siguiente línea de código: int aleatorio = R.nextInt(int x); Int aleatorio es la variable donde se almacenará el valor aleatorio devuelto por R, que es nuestra variable de instancia de la clase Random, el método nextInt, se encarga de generar un valor aleatorio entre 0 y el valor de (x) sin incluir dicho valor, y a la vez estos valores devueltos por nextInt son en realidad valores seudoaleatorios (son producidos por cálculos matemáticos complejos), con el objetivo de sembrar el generador de numeros aleatorios, de modo que la secuencia no se repita. Dado el ejemplo de la caída de un dado, existen 6 probabilidades de su caída: int aleatorio = R.nextInt(6) Por lo tanto en este caso el valor de x=6, a este valor se le conoce como el factor de escala, ya que representa el número de valores únicos que nextInt puede producir, en este caso 6 = (0,1,2,3,4,5); a esto se le como escalar el rango de valores producidos por el método nextInt de Random. Pero un dado no tiene un lado con valor 0, ni va del 0 al 5, para solucionar esto se debe desplazar el rango de valores producidos, sumando un valor de desplazamiento en este caso 1. int aleatorio = 1 + R.nextInt(6); Ejercicio 1: Elabore una aplicación *.java, que retorne el numero aleatorio de un parámetro definido por el usuario. Deberá retornar true o false si este es mayor a 10, si es true deberá realizar una división entre 2, sino deberá mostrar un mensaje de error. Nota: el parámetro 1 no debe ser mayor al segundo, ni pueden ser negativos. Ejercicio 2: Elabore una aplicación *.java que muestre un histograma en base a un numero aleatorio entre 1 y 20, solo si el numero es múltiplo de 3; sino es así la aplicación deberá continuar hasta encontrar un numero que si cumpla con la condición propuesta. También se desea saber cuantos intentos fallidos de un múltiplo de 3 obtuvieron antes de encontrar el correcto.