Como criar um número aleatório de -99 a 99?

Posso usar o nextInt(100) para gerar um número aleatório entre 0 e 99. Mas como gerar um número aleatório inteiro entre -99 e 99?

Usando java.util.Random, basta fazer:

random.nextInt(199) - 99;

Como nextInt(199) retorna um número entre zero e 198, ao subtrair 99 é garantido que o resultado está entre -99 e 99.


Como regra geral, para obter um número aleatório entre determinada faixa de valores, basta fazer:

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

Lembrando que com esta fórmula, tanto min quanto max são inclusos.


Outra alternativa é usar java.util.concurrent.ThreadLocalRandom (disponível a partir do Java 7), que possui o método nextInt, com os valores mínimo e máximo:

ThreadLocalRandom.current().nextInt(-99, 100);

Lembrando que neste caso o valor máximo não é incluso, por isso tem que passar 100 para que o maior valor possível seja 99.

5 curtidas

A pergunta não foi minha, mas obrigado amigão =)