Gerando Números Aleatórios em um Intervalo

JavaBeginner
Pratique Agora

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.