logo

Generando números aleatorios en Java

Java proporciona tres formas de generar números aleatorios utilizando algunos métodos y clases integrados que se enumeran a continuación:

    Método java.util.Random clase Math.random: puede generar números aleatorios de tipo doble. Clase ThreadLocalRandom

1) java.util.Aleatorio

  • Para usar esta clase para generar números aleatorios, primero debemos crear una instancia de esta clase y luego invocar métodos como nextInt(), nextDouble(), nextLong(), etc. usando esa instancia.
  • Podemos generar números aleatorios de tipos enteros, flotantes, dobles, largos y booleanos usando esta clase.
  • Podemos pasar argumentos a los métodos para colocar un límite superior en el rango de números que se generarán. Por ejemplo, nextInt(6) generará números en el rango de 0 a 5, ambos inclusive.

Java






cadena de java

// A Java program to demonstrate random number generation> // using java.util.Random;> import> java.util.Random;> > public> class> generateRandom{> > >public> static> void> main(String args[])> >{> >// create instance of Random class> >Random rand =>new> Random();> > >// Generate random integers in range 0 to 999> >int> rand_int1 = rand.nextInt(>1000>);> >int> rand_int2 = rand.nextInt(>1000>);> > >// Print random integers> >System.out.println(>'Random Integers: '>+rand_int1);> >System.out.println(>'Random Integers: '>+rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = rand.nextDouble();> >double> rand_dub2 = rand.nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '>+rand_dub1);> >System.out.println(>'Random Doubles: '>+rand_dub2);> >}> }>

>

>

Producción

Random Integers: 618 Random Integers: 877 Random Doubles: 0.11981638980670772 Random Doubles: 0.7288425427367139>

2) Matemáticas.aleatorio()

La clase Math contiene varios métodos para realizar diversas operaciones numéricas, como calcular exponenciación, logaritmos, 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. El siguiente programa explica cómo utilizar este método:

Java




// Java program to demonstrate working of> // Math.random() to generate random numbers> import> java.util.*;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generating random doubles> >System.out.println(>'Random doubles: '> + Math.random());> >System.out.println(>'Random doubles: '> + Math.random());> >}> }>

>

>

fórmula de albañil
Producción

Random doubles: 0.40748894116045375 Random doubles: 0.006683607229094002>

3) clase java.util.concurrent.ThreadLocalRandom

Esta clase se introduce en Java 1.7 para generar números aleatorios de tipo entero, doble, booleano, etc. El siguiente programa explica cómo usar esta clase para generar números aleatorios:

Java




// Java program to demonstrate working of ThreadLocalRandom> // to generate random numbers.> import> java.util.concurrent.ThreadLocalRandom;> > public> class> generateRandom> {> >public> static> void> main(String args[])> >{> >// Generate random integers in range 0 to 999> >int> rand_int1 = ThreadLocalRandom.current().nextInt();> >int> rand_int2 = ThreadLocalRandom.current().nextInt();> > >// Print random integers> >System.out.println(>'Random Integers: '> + rand_int1);> >System.out.println(>'Random Integers: '> + rand_int2);> > >// Generate Random doubles> >double> rand_dub1 = ThreadLocalRandom.current().nextDouble();> >double> rand_dub2 = ThreadLocalRandom.current().nextDouble();> > >// Print random doubles> >System.out.println(>'Random Doubles: '> + rand_dub1);> >System.out.println(>'Random Doubles: '> + rand_dub2);> > >// Generate random booleans> >boolean> rand_bool1 = ThreadLocalRandom.current().nextBoolean();> >boolean> rand_bool2 = ThreadLocalRandom.current().nextBoolean();> > >// Print random Booleans> >System.out.println(>'Random Booleans: '> + rand_bool1);> >System.out.println(>'Random Booleans: '> + rand_bool2);> >}> }>

>

tabla hash versus mapa hash

>

Producción

Random Integers: -2106603442 Random Integers: 1894823880 Random Doubles: 0.6161052280172054 Random Doubles: 0.8418944588752132 Random Booleans: false Random Booleans: true>

Para generar números aleatorios con rangos específicos. Hay 2 maneras diferentes de hacerlo:

  • Usando clase aleatoria
  • Usando el método Math.random()

1. Usando clase aleatoria

Aquí hay una fórmula para generar números aleatorios con un rango específico, donde el mínimo y el máximo son nuestro límite de número inferior y superior.

Rand aleatorio = nuevo Aleatorio();
int número aleatorio = rand.nextInt(max – min + 1) + min;

Java

java agregar a una matriz




import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >Random rand =>new> Random();> >int> max=>100>,min=>50>;> >System.out.println(>'Generated numbers are within '>+min+>' to '>+max);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >System.out.println(rand.nextInt(max - min +>1>) + min);> >}> }>

>

>

Producción

Generated numbers are within 50 to 100 58 87 55>

Complejidad temporal: Tiene una complejidad temporal de O(1)
Espacio auxiliar: O(1) requiere espacio constante.

2. Usando el método Math.random()

Aquí está la fórmula para generar un número aleatorio con un rango específico, donde mínimo y máximo son nuestro límite inferior y superior de número:

int número aleatorio = min + (int)(Math.random() * ((max – min) + 1));

Java




sistemas operativos mac
/*package whatever //do not write package name here */> import> java.io.*;> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >int> max=>100>,min=>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 53 99 77>

Complejidad temporal: Tiene una complejidad temporal de O(1)
Espacio auxiliar: O(1) requiere espacio constante.