Como gerar números aleatórios em Java
Aprenda como gerar números aleatórios em Java com 4 técnicas diferentes, com um intervalo específico e de difentes tipos(integer, double, float, long e até boolean).
Usando a classe Random
Para usar a classe Random
para gerar números aleatórios, siga os passos abaixo:
- Importe a classe
java.util.Random
- Faça a instância da classe
Random
, ou seja,Random rand = new Random()
- Chame um dos métodos do objeto
rand
:nextInt(upperbound)
: gera números aleatórios no intervalo de 0 aupperbound-1
nextFloat()
: gera umfloat
entre0.0
e1.0
nextDouble()
: gera umdouble
entre0.0
e1.0
Exemplo:
import java.util.Random;
class Main {
public static void main(String[] args) {
Random rand = new Random();
int upperbound = 25;
// gerando inteiros aleatórios de 0 a 24
int int_random = rand.nextInt(upperbound);
// gerando double aleatório entre 0.0 e 1.0
double double_random = rand.nextDouble();
// gerando float aleatório entre 0.0 e 1.0
float float_random = rand.nextFloat();
System.out.println("Inteiro aleatório entre 0 e " + (upperbound-1) + " : " + int_random);
System.out.println("Float aleatório entre 0.0 e 1.0 : " + float_random);
System.out.println("Double aleatório entre 0.0 e 1.0 : " + double_random);
}
}
Usando a classe Math
Para gerar números aleatórios em um intervalo usando Math.random()
, siga os passos abaixo:
- Declare o valor mínimo do intervalo
- Declare o valor máximo do intervalo
- Use a fórmula
Math.floor(Math.random() * (max - min + 1) + min)
para gerar valores com o valor mínimo e o valor máximo inclusos. - Faça o cast para o tipo desejado
Exemplo:
class Main {
public static void main(String[] args) {
int min = 5;
int max = 20;
// gerando inteiros aleatórios de 5 a 20
int int_random = (int)(Math.random() * (max - min + 1) + min);
// gerando double aleatório entre 5.0 e 20.0
double double_random = Math.random() * (max - min + 1) + min;
// gerando float aleatório entre 5.0 e 20.0
float float_random = (float)(Math.random() * (max - min + 1) + min);
System.out.println("Inteiro aleatório entre " + min + " e " + max + " : " + int_random);
System.out.println("Float aleatório entre " + min + " e " + max + " : " + float_random);
System.out.println("Double aleatório entre " + min + " e " + max + " : " + double_random);
}
}
Usando a classe ThreadLocalRandom
Para gerar números aleatórios em um intervalo usando ThreadLocalRandom
, siga os passos abaixo:
- Importe a classe
java.util.concurrent.ThreadLocalRandom
- Chame um dos métodos da classe
ThreadLocalRandom
:nextInt(min, max)
: gera números aleatórios no intervalo demin
amax-1
nextDouble(min, max)
: gera umdouble
entremin
emax
nextBoolean()
: gera umboolean
aleatório
Exemplo:
import java.util.concurrent.ThreadLocalRandom;
class Main {
public static void main(String[] args) {
int min = 5;
int max = 20;
// gerando inteiros aleatórios de 5 a 20
int int_random = ThreadLocalRandom.current().nextInt(min, max);
// gerando double aleatório entre 5.0 e 20.0
double double_random = ThreadLocalRandom.current().nextDouble(min, max);
// gerando boolean aleatório
boolean boolean_random = ThreadLocalRandom.current().nextBoolean();
System.out.println("Inteiro aleatório entre " + min + " e " + max + " : " + int_random);
System.out.println("Double aleatório entre " + min + " e " + max + " : " + double_random);
System.out.println("Boolean aleatório : " + boolean_random);
}
}
Usando a classe SecureRandom
A classe Random
tem uma alta chance de repetir números durante a geração de números aleatórios. Enquanto a classe SecureRandom
nos permite gerar números aleatórios criptograficamente fortes usando os seguintes passos:
- Importe a classe
java.security.SecureRandom
- Faça a instância da classe
SecureRandom
, ou seja,SecureRandom rand = new SecureRandom()
- Use um dos métodos da classe
SecureRandom
:nextInt()
: gera um número inteiro aleatórionextDouble()
: gera umdouble
aleatórionextFloat()
: gera umfloat
aleatório
Exemplo:
import java.security.SecureRandom;
class Main {
public static void main(String[] args) {
SecureRandom rand = new SecureRandom();
// gerando inteiros aleatórios
int int_random = rand.nextInt();
// gerando double aleatório
double double_random = rand.nextDouble();
// gerando float aleatório
float float_random = rand.nextFloat();
System.out.println("Inteiro aleatório : " + int_random);
System.out.println("Double aleatório : " + double_random);
System.out.println("Float aleatório : " + float_random);
}
}
Conclusão
Neste artigo, vimos como gerar números aleatórios em Java usando as classes Random
, Math
, ThreadLocalRandom
e SecureRandom
.