Bóson Treinamentos em Ciência e Tecnologia

Como gerar números aleatórios em Java com java.util.Random e Math.random()

Como gerar números aleatórios em Java com classe random e math.random()

Gerando números aleatórios em Java com java.util.Random e Math.random()

Neste artigo veremos como é possível gerar números aleatórios em Java usando a classe random e o método estático Math.random().

Usando classe Random

Usamos a classe Random para gerar números aleatórios em Java – na prática, números pseudoaleatórios.  É possível gerar números de vários tipos, incluindo inteiros, double e float.

Esta classe usa uma semente de 48 bits para gerar os números. Porém, ela não é criptograficamente segura. Caso você precise de um gerados de números para uso em aplicações com restrições de segurança, use a classe SecureRandom.

Para utilizar essa classe é necessário importá-la com o comando a seguir:

import java.util.Random;

Métodos da classe Random

A seguir temos os métodos específicos da classe Random disponíveis para a geração de números aleatórios.

Método Ação
next(int bits) Gera o próximo número pseudoaleatório
nextBoolean() Retorna um valor booleano pseudoaleatório
nextBytes(byte[] bytes) Gera bytes aleatórios e os coloca em um array de bytes fornecido pelo usuário
nextDouble() Retorna um valor do tipo Double entre 0.0 e 1.0
nextFloat() Retorna um valor do tipo Float entre 0.0 e 1.0
nextInt Retorna um valor do tipo Int
nextInt(int x) Retorna um valor do tipo Int entre 0 e o valor x especificado (excluindo o próprio x)
nextLong() Retorna um valor do tipo Long
nextGaussian() Retorna um valor double Gaussiano com média 0.0 e desvio padrão 1.0
setSeed(long semente) Configura a semente do gerador de números aleatórios, usando uma semente do tipo long.

Exemplo – Gerando um número inteiro aleatório qualquer:

import java.util.Random;
public class testes {
  public static void main(String[] args) {
    Random aleatorio = new Random();
    int valor = aleatorio.nextInt();
    System.out.println("Número gerado: " + valor);
  }
}

Exemplo 02: Gerando um número inteiro aleatório entre 1 e 30:

Random aleatorio = new Random();
int valor = aleatorio.nextInt(30) + 1;
System.out.println("Número gerado: " + valor);

Para gerar números entre um intervalo especificado, devemos utilizar a seguinte fórmula:

aleatorio.nextInt((max - min) + 1) + min;

onde max é o valor máximo do intervalo e min é o valor inicial do intervalo.

Exemplo 03: Gerando um número aleatório do tipo float entre 0 e 100:

Random aleatorio = new Random();
float valor = aleatorio.nextFloat() * 100;
System.out.println("Número gerado: " + valor);

Usando Math.random():

Também é possível gerar números aleatórios (pseudoaleatórios) usando o método estático random() da classe Math. Este método retorna um valor double no intervalo de 0.0 até 1.0, sem incluir este último valor (0.0 <= x < 1.0). Caso se necessite de outros intervalos de valores, será preciso efetuar operações aritméticas com os valores gerados, como por exemplo uma multiplicação.

Um dado importante sobre o método Math.random é que ele, internamente, utiliza a própria classe java.util.Random para gerar os números aleatórios.
Para gerar números inteiros com esse método é necessário realizar cast para int do valor gerado.

Exemplo 01:

// Gerando número aleatório entre 0 e 1 com Math.random()
import java.lang.Math;
public class aleatorio {
   public static void main(String args[]) {
      // Gerar o número aleatório
      double numAleatorio = Math.random();
      // Mostrando o número gerado na saída:
      System.out.println("Número gerado: " + numAleatorio);
   }
}

Exemplo 02:

// Gerando 5 números aleatórios inteiros entre 1 e 10 com Math.random:
import java.lang.Math;
public class aleatorio {
   public static void main(String args[]) {
     // Gerar os 5 números aleatórios e mostrá-los:
     for (int i = 0; i < 5; i++) {
        int numAleatorio = (int)(Math.random() * 10 ) + 1;
        System.out.println("Número: " + numAleatorio);
     }
   }
}

Resultado:

 

Sair da versão mobile