Introdução
Java oferece vários métodos embutidos para gerar números aleatórios em suas classes Math e Random. No entanto, gerar números aleatórios em um intervalo pode ser desafiador. Neste laboratório, você aprenderá diferentes métodos para gerar números aleatórios em um intervalo, incluindo:
Gerador de números aleatórios usando a classe Math
Podemos usar o método Math.random() para gerar um valor float entre 0 e 1, o que é adequado para gerar números aleatórios. No entanto, é desafiador gerar valores float em um intervalo específico.
Neste método, produziremos um número aleatório entre min e max (inclusive min e exclusivo max) aproveitando a fórmula do método Math.random().
Aqui está o exemplo de código:
public static int randomNumberGenerator(int min, int max) {
double r = Math.random();
int randomNum = (int) (r * (max - min)) + min;
return randomNum;
}
Para usar este método, utilize o método randomNumberGenerator() e passe os argumentos inteiros de intervalo mínimo e máximo; o método retornará um número inteiro aleatório entre os intervalos.
Aqui está o código que usa o randomNumberGenerator() para gerar dois números aleatórios; o primeiro deve estar no intervalo de 5 a 105 e o segundo no intervalo de 2199 a 2200.
int r1 = randomNumberGenerator(5, 105);
int r2 = randomNumberGenerator(2199, 2200);
Para executar este método, execute os seguintes comandos em seu terminal:
$ cd project
$ touch RandomNumbers.java
// paste the code
$ javac RandomNumbers.java
$ java RandomNumbers
Gerador de números aleatórios usando a classe Random
Outra forma de gerar números aleatórios dentro de um intervalo especificado é usar o método nextInt() na classe Random.
O método nextInt() gera um valor inteiro no intervalo [0, n).
public static int randomNumberGenerator(int min, int max) {
Random r = new Random();
int randomNum = r.nextInt(max - min) + min;
return randomNum;
}
Este método recebe os parâmetros min e max e retorna um inteiro aleatório entre o intervalo especificado. Neste método, nextInt() produz um número aleatório entre 0 e (max-min), e então adicionamos o valor min para obter o número aleatório final.
Aqui está o código que usa o randomNumberGenerator() para gerar dois números aleatórios; o primeiro deve estar no intervalo de 500 a 2000, e o segundo deve estar no intervalo de 500 a 501.
int randomNum1 = randomNumberGenerator(500, 2000);
int randomNum2 = randomNumberGenerator(500, 501);
Para executar este método, execute os seguintes comandos em seu terminal:
$ cd project
$ touch RandomNumbers.java
// paste the code
$ javac RandomNumbers.java
$ java RandomNumbers
Usando o método ints() da classe Random
Também podemos usar o método ints() da classe Random para gerar um fluxo (stream) de inteiros aleatórios dentro de um intervalo.
Aqui está o código para gerar o fluxo:
Random r = new Random();
IntStream stream = r.ints(5, 100, 120);
Aqui, o método ints() recebe três parâmetros: primeiro, o parâmetro count, que define quantos inteiros queremos gerar, e o parâmetro bound, que define o intervalo. Por exemplo, em nosso código, o parâmetro bound é de 100 a 120. É um parâmetro mínimo inclusivo (100) e um máximo exclusivo (120).
Após criar este fluxo, podemos consumi-lo usando forEach() ou coletar em uma coleção como uma List ou um array.
Aqui está o código que usa o método ints() para gerar cinco inteiros aleatórios entre 150 e 2000:
int min = 150; //definindo o intervalo mínimo
int max = 2000; //definindo o intervalo máximo
Random r = new Random();
IntStream stream = r.ints(5, min, max);//Gerando o fluxo aleatório
int randomNum = stream.findFirst().getAsInt();//Obtendo o primeiro valor do fluxo
System.out.print("The random number is: " + randomNum);//Imprimindo o número aleatório
Para executar este método, execute os seguintes comandos em seu terminal:
$ cd project
$ touch RandomNumbers.java
// paste the code
$ javac RandomNumbers.java
$ java RandomNumbers
Resumo
Gerar números aleatórios em um intervalo específico em Java é essencial para diversas aplicações. Neste laboratório, você aprendeu vários métodos para gerar números aleatórios em um intervalo, como usar Math.random(), Random.nextInt() e Random.ints(). Cada método tem seus prós e contras, e você deve escolher aquele que melhor se adapta às suas necessidades.



