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-1nextFloat(): gera umfloatentre0.0e1.0nextDouble(): gera umdoubleentre0.0e1.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 deminamax-1nextDouble(min, max): gera umdoubleentreminemaxnextBoolean(): gera umbooleanaleató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 umdoublealeatórionextFloat(): gera umfloataleató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.
