0Pricing
C++ Academy · Aula

Números aleatórios com o cabeçalho random

Gere números aleatórios de qualidade com motores e distribuições modernos

Números aleatórios com o cabeçalho random é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 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 C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

Por que não rand()?

O std::rand() legado da linguagem C usa um estado global, tem baixa qualidade estatística e não é seguro para execução concorrente. O C++ moderno oferece ferramentas muito melhores em <random>.

A receita em três partes

Números aleatórios no C++ moderno envolvem três partes:

  • Uma fonte de sementes (entropia verdadeira)
  • Um motor gerador (estado determinístico)
  • Uma distribuição (determina o formato da saída)

Inicialização com random_device

std::random_device obtém entropia real do OS — mas pode ser lento. Use-o uma vez para inicializar um motor rápido.

#include <random>
std::random_device rd;
std::mt19937 engine(rd());

O motor mt19937

std::mt19937 (Mersenne Twister) é um motor pseudoaleatório rápido, com excelente qualidade estatística. É a escolha padrão para a maioria das aplicações.

Distribuição uniforme de inteiros

Produz inteiros distribuídos uniformemente em um intervalo fechado.

std::uniform_int_distribution<int> dice(1, 6);
int roll = dice(engine);

Distribuição uniforme de números reais

Para números de ponto flutuante em um intervalo semiaberto [a, b).

std::uniform_real_distribution<double> dist(0.0, 1.0);
double x = dist(engine);

Distribuição normal (gaussiana)

Para números aleatórios com curva de sino — comum em simulações e aprendizado de máquina.

std::normal_distribution<double> norm(0.0, 1.0); // mean 0, stddev 1
double x = norm(engine);

Outras distribuições

A biblioteca inclui muitas outras: bernoulli_distribution, poisson_distribution, exponential_distribution, discrete_distribution e mais.

Aleatoriedade reproduzível

Para testes, inicialize com um valor fixo a fim de obter a mesma sequência em cada execução.

std::mt19937 engine(42);
// Same output every time you run the program

Embaralhamento aleatório

Embaralhe um contêiner com std::shuffle, que aceita qualquer motor.

#include <algorithm>
std::vector<int> v = {1,2,3,4,5};
std::shuffle(v.begin(), v.end(), engine);

Armadilha: reinicializar em um laço

Não crie um novo random_device ou motor para cada número aleatório. Construa um único motor e reutilize-o entre as chamadas.

Verificação rápida

Qual é a maneira moderna mais segura de inicializar um motor pseudoaleatório em C++?

Recapitulação

A aleatoriedade no C++ moderno usa random_device para inicialização, mt19937 como motor e uma distribuição como uniform_int_distribution para dar forma à saída. Reutilize o motor — nunca crie um por chamada.

Perguntas Frequentes

A aula “Números aleatórios com o cabeçalho random” é grátis?

Sim — o texto completo de “Números aleatórios com o cabeçalho random” é 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 C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Números aleatórios com o cabeçalho random”?

Gere números aleatórios de qualidade com motores e distribuições modernos Você pratica C++ 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 C++ Academy?

Nenhuma experiência prévia é necessária. C++ 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 3 de 4.

Quanto tempo leva a aula “Números aleatórios com o cabeçalho random”?

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 C++ Academy?

Sim. Cada aula de C++ 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. Tipos inteiros versus ponto flutuante
  2. O cabeçalho cmath: pow, sqrt, abs, round
  3. Números aleatórios com o cabeçalho random
  4. Limites numéricos e comportamento de overflow
← Voltar para C++ Academy