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 =)