Java Random Number Generation

Gerar números aleatórios em Java é uma tarefa comum. Por exemplo, você pode desejar executar testes com valores aleatórios todas as vezes. Nesta postagem, veremos diferentes maneiras de gerar números aleatórios em Java.



Como gerar números aleatórios em Java

Em Java, podemos gerar números aleatórios usando java.util.Random aula.

Depois de importar a classe Random, podemos criar um objeto a partir dela que nos dá a capacidade de usar números aleatórios.


Por exemplo, métodos nextInt() e nextLong() retornará um número que está dentro do intervalo de valores (negativo e positivo) dos tipos de dados int e long, respectivamente.



Gerando aleatório Int, Long e Boolean

import java.util.Random; public class GenerateRandomNumbers {
static Random rand;
public static void main(String[] args) {
rand = new Random();
System.out.println('Random integer: ' + rand.nextInt());
System.out.println('Random long: ' + rand.nextLong());
System.out.println('Random boolean: ' + rand.nextBoolean());
} }


Gerando números aleatórios em um intervalo

Às vezes, queremos que números aleatórios sejam gerados a partir de um determinado intervalo, por exemplo, entre 1 e 50.


Para fazer isso, podemos fornecer um parâmetro inteiro para nextInt() método. Este parâmetro define o limite superior do intervalo.



Uma coisa a ser observada aqui é que o número limite superior não é incluído como um dos números gerados. Por exemplo, nextInt(5) gera números de 0 para 4 inclusive.

Se também desejarmos 5 para estar na lista dos números aleatórios, precisamos usar nextInt(5)+1

import java.util.Random; public class GenerateRandomNumbers {
static Random rand;
public static void main(String[] args) {
rand = new Random();
int randInt = rand.nextInt(5) + 1;
System.out.println('Random integer: ' + randInt);
} }


Gerando Números Aleatórios Seguros em Java

A classe Random gera números aleatórios de maneira determinística. O algoritmo que produz a aleatoriedade é baseado em um número chamado semente. Se o número da semente for conhecido, então é possível descobrir os números que serão produzidos a partir do algoritmo.


O objetivo do SecureRandom Classe é gerar números aleatórios criptograficamente fortes.

O SecureRandom deve produzir saída não determinística. Portanto, qualquer material de semente é passado para um SecureRandom objeto deve ser imprevisível.

Abaixo está um exemplo de uso de SecureRandom classe para gerar números aleatórios em Java

import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.SecureRandom; public class GenerateRandomNumbers {
static SecureRandom secureRandomGenerator;
public static void main(String[] args) {


try {

secureRandomGenerator = SecureRandom.getInstance('SHA1PRNG', 'SUN');
}

catch (NoSuchAlgorithmException | NoSuchProviderException e) {
}

//Get random integer in range
int randInRange = secureRandomGenerator.nextInt(499);
System.out.println(randInRange);
} }

Os exemplos acima ilustram como gerar números aleatórios em Java.


Referência: Geração segura de números aleatórios