Covil Do Dev

Como gerar números aleatórios em Java

Aprenda como gerar números aleatórios em Java com 4 técnicas diferentes, com um intervalo específico e de difentes tipos(integer, double, float, long e até boolean).

Usando a classe Random

Para usar a classe Random para gerar números aleatórios, siga os passos abaixo:

  1. Importe a classe java.util.Random
  2. Faça a instância da classe Random, ou seja, Random rand = new Random()
  3. Chame um dos métodos do objeto rand:
    • nextInt(upperbound): gera números aleatórios no intervalo de 0 a upperbound-1
    • nextFloat(): gera um float entre 0.0 e 1.0
    • nextDouble(): gera um double entre 0.0 e 1.0

Exemplo:

import java.util.Random;

class Main {
  public static void main(String[] args) {
    Random rand = new Random();
    
    int upperbound = 25;
    // gerando inteiros aleatórios de 0 a 24
    int int_random = rand.nextInt(upperbound);
       
    // gerando double aleatório entre 0.0 e 1.0
    double double_random = rand.nextDouble();
    
    // gerando float aleatório entre 0.0 e 1.0
    float float_random = rand.nextFloat();
    
    System.out.println("Inteiro aleatório entre 0 e " + (upperbound-1) + " : " + int_random);
    System.out.println("Float aleatório entre 0.0 e 1.0 : " + float_random);
    System.out.println("Double aleatório entre 0.0 e 1.0 : " + double_random);
  }
}

Usando a classe Math

Para gerar números aleatórios em um intervalo usando Math.random(), siga os passos abaixo:

  1. Declare o valor mínimo do intervalo
  2. Declare o valor máximo do intervalo
  3. Use a fórmula Math.floor(Math.random() * (max - min + 1) + min) para gerar valores com o valor mínimo e o valor máximo inclusos.
  4. Faça o cast para o tipo desejado

Exemplo:

class Main {
  public static void main(String[] args) {
    int min = 5;
    int max = 20;
    // gerando inteiros aleatórios de 5 a 20
    int int_random = (int)(Math.random() * (max - min + 1) + min);
    
    // gerando double aleatório entre 5.0 e 20.0
    double double_random = Math.random() * (max - min + 1) + min;
    
    // gerando float aleatório entre 5.0 e 20.0
    float float_random = (float)(Math.random() * (max - min + 1) + min);
    
    System.out.println("Inteiro aleatório entre " + min + " e " + max + " : " + int_random);
    System.out.println("Float aleatório entre " + min + " e " + max + " : " + float_random);
    System.out.println("Double aleatório entre " + min + " e " + max + " : " + double_random);
  }
}

Usando a classe ThreadLocalRandom

Para gerar números aleatórios em um intervalo usando ThreadLocalRandom, siga os passos abaixo:

  1. Importe a classe java.util.concurrent.ThreadLocalRandom
  2. Chame um dos métodos da classe ThreadLocalRandom:
    • nextInt(min, max): gera números aleatórios no intervalo de min a max-1
    • nextDouble(min, max): gera um double entre min e max
    • nextBoolean(): gera um boolean aleatório

Exemplo:

import java.util.concurrent.ThreadLocalRandom;

class Main {
  public static void main(String[] args) {
    int min = 5;
    int max = 20;
    // gerando inteiros aleatórios de 5 a 20
    int int_random = ThreadLocalRandom.current().nextInt(min, max);
    
    // gerando double aleatório entre 5.0 e 20.0
    double double_random = ThreadLocalRandom.current().nextDouble(min, max);
    
    // gerando boolean aleatório
    boolean boolean_random = ThreadLocalRandom.current().nextBoolean();
    
    System.out.println("Inteiro aleatório entre " + min + " e " + max + " : " + int_random);
    System.out.println("Double aleatório entre " + min + " e " + max + " : " + double_random);
    System.out.println("Boolean aleatório : " + boolean_random);
    }
}

Usando a classe SecureRandom

A classe Random tem uma alta chance de repetir números durante a geração de números aleatórios. Enquanto a classe SecureRandom nos permite gerar números aleatórios criptograficamente fortes usando os seguintes passos:

  1. Importe a classe java.security.SecureRandom
  2. Faça a instância da classe SecureRandom, ou seja, SecureRandom rand = new SecureRandom()
  3. Use um dos métodos da classe SecureRandom:
    • nextInt(): gera um número inteiro aleatório
    • nextDouble(): gera um double aleatório
    • nextFloat(): gera um float aleatório

Exemplo:

import java.security.SecureRandom;

class Main {
  public static void main(String[] args) {
    SecureRandom rand = new SecureRandom();
    
    // gerando inteiros aleatórios
    int int_random = rand.nextInt();
    
    // gerando double aleatório
    double double_random = rand.nextDouble();
    
    // gerando float aleatório
    float float_random = rand.nextFloat();
    
    System.out.println("Inteiro aleatório : " + int_random);
    System.out.println("Double aleatório : " + double_random);
    System.out.println("Float aleatório : " + float_random);
  }
}

Conclusão

Neste artigo, vimos como gerar números aleatórios em Java usando as classes Random, Math, ThreadLocalRandom e SecureRandom.

Obrigado por visitar o blog e por ler esse artigo, se tive qualquer dúvida, ideia ou sugestão, não hesite em entrar em contato pelo meu e-mail: lindomar@covildodev.com.br