Gerando números aleatórios
Random e ThreadLocalRandom.
Gerando números aleatórios é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.
Gerando Números Aleatórios
A aleatoriedade é essencial para jogos, simulações e amostragens. Java oferece Math.random(), a classe Random e ThreadLocalRandom para código concorrente.
Noções Básicas de Math.random
Math.random() retorna um double no intervalo [0.0, 1.0): zero inclusivo e um exclusivo.
public class Main {
public static void main(String[] args) {
double r = Math.random();
System.out.println("Value between 0 and 1: " + r);
}
}Escalonando Math.random
Multiplique e faça a conversão para obter um intervalo de inteiros. (int)(Math.random() * 6) produz valores de 0 a 5.
public class Main {
public static void main(String[] args) {
int roll = (int)(Math.random() * 6) + 1;
System.out.println("Dice: " + roll);
}
}A Classe Random
A classe java.util.Random é mais flexível. Crie uma instância e depois chame métodos como nextInt, nextDouble e nextBoolean.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
System.out.println(rng.nextBoolean());
System.out.println(rng.nextDouble());
}
}nextInt com um Limite
nextInt(bound) retorna um int de 0, inclusivo, até bound, exclusivo. nextInt(6) produz valores de 0 a 5.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random();
int value = rng.nextInt(100);
System.out.println("0 to 99: " + value);
}
}Sementes para Reprodutibilidade
Passar uma semente para o construtor torna a sequência determinística: a mesma semente sempre produz os mesmos números. Isso é extremamente útil para testes.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random(42);
System.out.println(rng.nextInt(1000));
System.out.println(rng.nextInt(1000));
}
}Mesma Semente, Mesma Sequência
Dois objetos Random criados com a mesma semente produzem sequências idênticas. Isso é útil quando um erro precisa ser reproduzido exatamente.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random a = new Random(7);
Random b = new Random(7);
System.out.println(a.nextInt(50) == b.nextInt(50));
}
}ThreadLocalRandom
Em programas com vários fluxos de execução, um único Random compartilhado se torna um gargalo. ThreadLocalRandom.current() fornece a cada fluxo seu próprio gerador, sem disputa.
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) {
int value = ThreadLocalRandom.current().nextInt(1, 7);
System.out.println("Dice: " + value);
}
}Nunca Compartilhe um Random entre Fluxos de Execução
Não passe uma única instância de Random para vários fluxos de execução; isso pode produzir uma distribuição inadequada e causar disputa. Prefira ThreadLocalRandom em código concorrente.
Doubles e Distribuições Gaussianas
nextDouble() fornece [0,1), e nextGaussian() retorna valores de uma distribuição normal com média 0 e desvio padrão 1.
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rng = new Random(1);
System.out.println(rng.nextDouble());
System.out.println(rng.nextGaussian());
}
}Escolhendo a Ferramenta Certa
Use Math.random() para obter rapidamente um double, Random quando precisar de limites ou de uma semente e ThreadLocalRandom em código concorrente. Para aleatoriedade relacionada à segurança, use SecureRandom.
Verificação Rápida
Teste sua compreensão da aleatoriedade.
Recapitulação
Você aprendeu a gerar números aleatórios.
Math.random()fornece um double no intervalo [0,1).Random.nextInt(bound)fornece valores de 0 a bound-1.- Uma semente torna as sequências reproduzíveis.
ThreadLocalRandomé a opção segura para código concorrente.
Perguntas Frequentes
A aula “Gerando números aleatórios” é grátis?
Sim — o texto completo de “Gerando números aleatórios” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.
O que vou aprender em “Gerando números aleatórios”?
Random e ThreadLocalRandom. Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Java Academy?
Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Gerando números aleatórios”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Java Academy?
Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- A classe Math
- Gerando números aleatórios
- Intervalos aleatórios e embaralhamento
- Arredondamento e limites matemáticos