Java fornece três maneiras de gerar números aleatórios usando alguns métodos e classes integrados, conforme listado abaixo:

  • classe java.util.Random
  • Método Math.random : pode gerar números aleatórios de tipo duplo.
  • Classe ThreadLocalRandom

1) java.util.Random
  • Para usar essa classe para gerar números aleatórios, primeiro temos que criar uma instância dessa classe e, em seguida, invocar métodos como nextInt(), nextDouble(), nextLong() etc. usando essa instância.
  • Podemos gerar números aleatórios de tipos inteiros, float, double, long, booleanos usando esta classe.
  • Podemos passar argumentos aos métodos para colocar um limite superior na faixa dos números a serem gerados. Por exemplo, nextInt (6) gerará números no intervalo de 0 a 5, ambos inclusive.




      // 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);
          }
      }

      Saída:

    Inteiros aleatórios: 547
    Inteiros aleatórios: 126
    Duplas aleatórias: 0,8369779739988428
    Duplas aleatórias: 0,5497554388209912
    

     

    2) Math.random()

    A classe Math contém vários métodos para realizar várias operações numéricas, como cálculo de exponenciação, logaritmos etc. Um desses métodos é random(), este método retorna um valor duplo com um sinal positivo, maior ou igual a 0,0 e menor que 1,0 . Os valores retornados são escolhidos pseudo-aleatoriamente. Este método só pode gerar números aleatórios do tipo Doubles. O programa abaixo explica como usar este método:




    // 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());
        }
    }

    Saída:



    Duplas aleatórias: 0,13077348615666562
    Duplas aleatórias: 0,09247016928442775
    

     

    3) classe java.util.concurrent.ThreadLocalRandom

    Esta classe é introduzida em java 1.7 para gerar números aleatórios do tipo inteiros, duplos, booleanos etc. O programa abaixo explica como usar esta classe para gerar números aleatórios:




    // 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);
        }
    }

    Saída:

    Inteiros aleatórios: 536953314
    Inteiros aleatórios: 25905330
    Duplas aleatórias: 0,7504989954390163
    Duplas aleatórias: 0,7658597196204409
    Booleanos aleatórios: falso
    Booleanos aleatórios: verdadeiro
    

    Referências:
    https://docs.oracle.com

    Este artigo é uma contribuição de Harsh Agarwal . Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo usando contribute.geeksforgeeks.org ou enviar o seu artigo para contribute@geeksforgeeks.org. Veja o seu artigo na página principal do GeeksforGeeks e ajude outros Geeks.

    Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima.

    Atenção leitor! Não pare de aprender agora. Obtenha todos os conceitos importantes de Java Foundation e Coleções com o curso Fundamentals of Java e Java Collections a um preço acessível ao aluno e torne-se pronto para a indústria. Para completar sua preparação desde o aprendizado de um idioma até o DS Algo e muitos mais, consulte o Curso Completo de Preparação para Entrevistas .