0Pricing
Java Academy · Aula

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

  1. A classe Math
  2. Gerando números aleatórios
  3. Intervalos aleatórios e embaralhamento
  4. Arredondamento e limites matemáticos
← Voltar para Java Academy