Números aleatorios se utilizan ampliamente en programación para simulaciones, juegos, seguridad, etc. Hay varias formas de generar números aleatorios utilizando métodos y clases integrados en Java. Los enfoques más utilizados se enumeran a continuación:
- clase java.util.Random
- Método Math.random() (devuelve valores dobles)
- Clase ThreadLocalRandom (introducida en Java 7)
Exploremos cada uno de estos enfoques uno por uno en detalle.
1. Usando java.util.Random
Con la ayuda de esta clase podemos generar números aleatorios de diferentes tipos (int double long boolean, etc.).
Métodos clave:
ubicación df
- siguienteInt(): Este método genera un número entero aleatorio (rango completo incluidos los negativos)
- nextInt(int enlazado): Este método genera un número entero aleatorio entre 0 (inclusive) y ligado (exclusivo)
- siguienteDoble(): Este método genera un doble aleatorio entre 0,0 (inclusive) y 1,0 (exclusivo)
- siguienteBooleano(): Verdadero o falso aleatorio
Ejemplo :
Java// Generating random number using java.util.Random; import java.util.Random; public class Geeks{ public static void main(String[] args) { // Creating the instance of Random class Random r= new Random(); // Generate random integers in range 0 to 999 int r1 = r.nextInt(1000); int r2 = r.nextInt(1000); // Printing random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate random doubles double rd1 = r.nextDouble(); double rd2 = r.nextDouble(); // Printing random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); } }
Producción
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275
Generar números en un rango específico
dividir cadenas c++
La fórmula para generar un número aleatorio con un rango específico se enumera a continuación:
Rand aleatorio = nuevo Aleatorio();
int randomNum = rand.nextInt(max - min + 1) + min;
Nota: min y max son nuestro límite de número inferior y superior.
Ejemplo:
Java// Generating random number in a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { Random r = new Random(); int max=100min=50; System.out.println('Generated numbers are within '+ min +' to '+ max); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); System.out.println(r.nextInt(max - min + 1) + min); } }
Producción
Generated numbers are within 50 to 100 55 51 51
2. Usando Math.random()
El clase de matematicas contiene varios métodos para realizar diversas operaciones numéricas, como calcular logaritmos de exponenciación, etc. Uno de estos métodos es aleatorio() este método devuelve un valor doble con signo positivo mayor o igual a 0,0 y menor que 1,0. Los valores devueltos se eligen de forma pseudoaleatoria. Este método sólo puede generar números aleatorios de tipo Dobles.
Ejemplo:
cadena de intJava
// Java program to demonstrate working of // Math.random() to generate random numbers import java.util.*; public class Geeks { public static void main(String args[]) { // Generating random doubles System.out.println('Random doubles: ' + Math.random()); System.out.println('Random doubles: ' + Math.random()); } }
Producción
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417
Generar números en un rango específico
Aquí está la fórmula para generar un número aleatorio con un rango específico donde el mínimo y el máximo son nuestro límite inferior y superior de número:
tutorial de selenio
int randomNum = min + (int)(Math.random() * ((max - min) + 1));
Ejemplo:
Java// Demonstrating how to generate random // number within a specific range import java.io.*; import java.util.*; class Geeks { public static void main (String[] args) { int max=100min=50; System.out.println('Generated numbers are within '+min+' to '+max); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); System.out.println(min + (int)(Math.random() * ((max - min) + 1))); } }
Producción
Generated numbers are within 50 to 100 82 68 77
3. Usando ThreadLocalRandom
Esta es la forma recomendada en entornos de subprocesos múltiples, ya que reduce la contención.
Métodos clave:
- actual().nextInt(): Entero aleatorio (rango completo)
- actual().nextInt(mínimo máximo + 1): Entero aleatorio en rango (he agregado este ejemplo acotado)
- actual().nextDouble(): Doble aleatorio (0,0 a 1,0)
- actual().nextBoolean(): Verdadero o falso aleatorio
Ejemplo:
Java// Demonstrates how to generate random integers // doubles and booleans using ThreadLocalRandom import java.util.concurrent.ThreadLocalRandom; public class Geeks { public static void main(String[] args) { // Generate random integers in range 0 to 999 // Random number between 0 and 999 int r1 = ThreadLocalRandom.current().nextInt(1000); // Random number between 0 and 999 int r2 = ThreadLocalRandom.current().nextInt(1000); // Print random integers System.out.println('Random Integers: ' + r1); System.out.println('Random Integers: ' + r2); // Generate Random doubles between 0.0 (inclusive) // and 1.0 (exclusive) double rd1 = ThreadLocalRandom.current().nextDouble(); double rd2 = ThreadLocalRandom.current().nextDouble(); // Print random doubles System.out.println('Random Doubles: ' + rd1); System.out.println('Random Doubles: ' + rd2); // Generate random booleans boolean rb1 = ThreadLocalRandom.current().nextBoolean(); boolean rb2 = ThreadLocalRandom.current().nextBoolean(); // Print random Booleans System.out.println('Random Booleans: ' + rb1); System.out.println('Random Booleans: ' + rb2); } }
Producción
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false