Gerador de números aleatórios Java

Aprenda como gerar números aleatórios em Java com exemplos de código interativos. Explore Random.nextInt(), SecureRandom, ThreadLocalRandom e Math.random() com explicações detalhadas.

Múltiplos métodos Práticas recomendadas Cópia instantânea

Precisa de um número aleatório rápido?

Experimente nosso aleatório on-line gerador de números para resultados instantâneos sem escrever nenhum código.

Gerador de números aleatórios abertos

Editor de código Java

Aprenda como gerar números aleatórios em Java com exemplos de código interativos. Explore Random.nextInt(), SecureRandom, ThreadLocalRandom e Math.random() com explicações detalhadas.

Saída

Saída simulada (Java é executado no servidor)

Clique em \"Executar código\" para veja o exemplo de saída

Aleatório básico com java.util.Random

Use Random.nextInt() para gerar números inteiros aleatórios em um intervalo específico. Este é o método mais comum para geração de números aleatórios de uso geral em Java.

Compreendendo a geração de números aleatórios em Java

Java fornece várias maneiras de gerar números aleatórios, cada uma otimizada para diferentes casos de uso. java.util.Random usa um algoritmo Linear Congruential Generator (LCG), SecureRandom fornece números aleatórios criptograficamente fortes, ThreadLocalRandom oferece geração segura de thread para aplicativos simultâneos e Math.random() fornece uma maneira simples de gerar duplas aleatórias. jogos e tarefas gerais de programação. Thread-safe para uso básico.

java.util.Random

java.util.Random oferece geração rápida de números pseudo-aleatórios adequada para simulações, jogos e tarefas gerais de programação. Seguro para uso básico.

SecureRandom

java.security.SecureRandom usa algoritmos específicos da plataforma (SHA1PRNG, NativePRNG) para gerar números aleatórios criptograficamente seguros para aplicativos de segurança.

ThreadLocalAleatório

ThreadLocalRandom fornece geração eficiente de números aleatórios thread-safe projetados especificamente para aplicativos multithread, evitando contenção e sobrecarga de sincronização.

Math.random()

Math.random() é um método simples que retorna um valor duplo entre 0,0 e 1,0. Conveniente para cálculos rápidos, mas menos flexível do que outras opções.

Casos de uso comuns

Jogos e simulações

Gere lançamentos aleatórios de dados, sorteios de cartas, spawns de inimigos e eventos de jogo usando Random.nextInt() ou ThreadLocalRandom em loops de jogo.

Segurança e criptografia

Crie senhas seguras, chaves de API, tokens de sessão e sais de criptografia usando SecureRandom para obter aleatoriedade de força criptográfica.

Aplicativos simultâneos

Use ThreadLocalRandom em fluxos paralelos e aplicativos multithread para evitar contenção e melhorar o desempenho.

Teste de software

Crie dados de teste aleatórios, entradas de teste fuzz e casos extremos para garantir cobertura de código robusta e detecção de bugs em aplicativos Java.

Como funciona a geração de números aleatórios em Java

A classe java.util.Random do Java usa um algoritmo Linear Congruential Generator (LCG) com uma semente de 48 bits. Ele fornece uma maneira simples de gerar números pseudo-aleatórios e é sincronizado para segurança de thread.

A classe SecureRandom fornece números aleatórios criptograficamente fortes usando implementações específicas da plataforma. Na maioria dos sistemas, ele usa a fonte de entropia do sistema operacional ou geradores de números aleatórios de hardware.

ThreadLocalRandom, introduzido no Java 7, foi projetado para aplicativos multithread. Ele usa um gerador de números aleatórios que é isolado do thread atual, evitando sobrecarga de sincronização e contenção.

Dicas de especialistas para geração aleatória de Java

🎯

Escolha a API certa

Use Random para casos simples, SecureRandom para segurança, ThreadLocalRandom para aplicativos simultâneos e Math.random() apenas para protótipos rápidos. Cada um tem casos de uso específicos.

🔒

Sempre use SecureRandom para segurança

Nunca use Random ou Math.random() para senhas, tokens ou operações criptográficas. Sempre use SecureRandom para garantir uma forte aleatoriedade e evitar padrões previsíveis.

Otimizar para acesso simultâneo

Em aplicativos multithread, ThreadLocalRandom é significativamente mais rápido do que sincronizar objetos aleatórios. Use-o em fluxos paralelos e coleções simultâneas.

Especificações técnicas

Algoritmos

  • Gerador Congruente Linear (classe Random)
  • SHA1PRNG ou NativePRNG (SecureRandom)
  • ThreadLocalRandom (Java 7+, baseado em Random)
  • Pseudo-aleatório duplo (Math.random())

Características de desempenho

  • Math.random(): mais rápido para duplas simples
  • ThreadLocalRandom: melhor para acesso simultâneo
  • Aleatório: boa sobrecarga sincronizada de uso geral
  • SecureRandom: mais lento devido à coleta de entropia