Pular para o conteúdo principal

Tutorial: gerador de números aleatórios com NumPy

O módulo random do NumPy é um conjunto de funções baseadas na geração de números pseudoaleatórios. "Aleatório" significa algo que não pode ser previsto logicamente.
Atualizado 17 de set. de 2026  · 4 min lido

Explorar com IA

ChatGPTClaudePerplexity

O módulo random do NumPy é um conjunto de funções baseadas na geração de números pseudoaleatórios. "Aleatório" significa algo que não pode ser previsto logicamente.

np.random.seed() Function

Neste exemplo, você vai simular o lançamento de uma moeda. Vai usar a função np.random(), que sorteia um número entre 0 e 1 de forma uniforme, ou seja, todos os números nesse intervalo têm a mesma chance de ocorrer.

Se o número sorteado for menor que 0,5 — o que tem 50% de chance — você considera cara; caso contrário, coroa. Esse tipo de experimento, em que o resultado é Verdadeiro (cara) ou Falso (coroa), é chamado de ensaio de Bernoulli.

O número pseudoaleatório funciona começando com um inteiro chamado seed (semente) e, a partir dele, gera números em sequência. A mesma seed produz a mesma sequência de números aleatórios — por isso o nome "pseudo". Se você quer ter resultados reprodutíveis, é recomendável inicializar o gerador com np.random.seed().

Para fazer os lançamentos, você importa o NumPy, define a seed do gerador e então sorteia quatro números aleatórios. Você pode especificar quantos números quer gerar com o parâmetro size.

import numpy as np
np.random.seed(42)
random_numbers = np.random.random(size=4)
random_numbers
array([0.3745012, 0.95071431, 0.73199394, 0.59865848])

O primeiro número é menor que 0,5, então é cara; os outros três são coroa. Você pode mostrar isso explicitamente usando a operação "menor que", que retorna um array de valores booleanos — True para cara e False para coroa.

heads = random_numbers < 0.5
heads
array([True, False, False, False], dtype=bool)

Por fim, você pode calcular o número de caras somando o array booleano heads, porque, em contexto numérico, o Python trata True como 1 e False como 0.

np.sum(heads)
1

Simulando quatro lançamentos aleatórios de moeda

No exemplo a seguir, queremos saber a probabilidade de obter quatro caras ao repetir, muitas vezes, quatro lançamentos de moeda. Podemos fazer isso com um laço for.

Primeiro, inicializamos o contador em zero. Em seguida, repetimos 10.000 vezes os ensaios de quatro lançamentos. Se em um ensaio saírem quatro caras, aumentamos o contador.

Então, qual é a probabilidade de sair quatro caras? É o número de vezes em que você obteve todas as caras, dividido pelo total de ensaios. O resultado fica por volta de 0,06.

n_all_heads = 0

# Inicializa o número de ensaios com 4 caras
for _ in range(10000):
         heads = np.random.random(size=4) < 0.5
         n_heads = np.sum(heads)
         if n_heads == 4:
             n_all_heads += 1

n_all_heads / 10000
0.0621

Exemplo interativo de geração de números aleatórios

Neste exemplo, vamos gerar muitos números aleatórios entre zero e um e, em seguida, traçar um histograma dos resultados. Se os números forem realmente aleatórios, todas as barras do histograma devem ter alturas (quase) iguais.

Para este exemplo, você vai:

  • Definir a seed do gerador com np.random.seed usando a seed 42.
  • Inicializar um array vazio, random_numbers, com 100.000 posições para armazenar os números aleatórios. Use np.empty(100000) para isso.
  • Escrever um laço for para sortear 100.000 números com np.random.random(), armazenando-os no array random_numbers. Para isso, itere sobre range(100000).
  • Plotar um histograma de random_numbers. Não é necessário rotular os eixos, pois estamos apenas checando o gerador de números aleatórios.
# Define a seed do gerador de números aleatórios
np.random.seed(42)

# Inicializa os números aleatórios: random_numbers
random_numbers = np.empty(100000)

# Gera números aleatórios iterando sobre range(100000)
for i in range(100000):
    random_numbers[i] = np.random.random()

# Plota um histograma
_ = plt.hist(random_numbers)

# Mostra o gráfico
plt.show()

Ao executar o código acima, obtemos o seguinte resultado:

histograma

Experimente você mesmo.

Para saber mais sobre geradores de números aleatórios e hacker statistics, confira este vídeo do nosso curso Statistical Thinking in Python (Part 1).

Este conteúdo foi extraído do curso Statistical Thinking in Python (Part 1), de Justin Bois, da DataCamp.

Tópicos
Python

Saiba mais sobre Python

Curso

Introdução ao NumPy

4 h
62K
Domine suas habilidades em NumPy aprendendo a criar, classificar, filtrar e atualizar matrizes usando o censo de árvores de NYC.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Matrizes Python

Matrizes Python com exemplos de código. Aprenda hoje mesmo a criar e imprimir matrizes usando o Python NumPy!
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Tutorial da função range() do Python

Aprenda sobre a função range() do Python e o que ela pode fazer com a ajuda de exemplos.
Aditya Sharma's photo

Aditya Sharma

7 min

Tutorial

Tutorial de conjuntos e teoria de conjuntos em Python

Aprenda sobre os conjuntos do Python: o que são, como criá-los, quando usá-los, funções incorporadas e sua relação com as operações da teoria dos conjuntos.
DataCamp Team's photo

DataCamp Team

13 min

Tutorial

Funções em Python: como chamar e escrever funções

Descubra como escrever funções em Python reutilizáveis e eficientes. Domine parâmetros, instruções de retorno e temas avançados como funções lambda. Organize melhor seu código com main() e outras boas práticas.
Karlijn Willems's photo

Karlijn Willems

14 min

Tutorial

Tutorial de Python

Em Python, tudo é objeto. Números, cadeias de caracteres (strings), DataFrames, e até mesmo funções são objetos. Especificamente, qualquer coisa que você usa no Python tem uma classe, um modelo associado por trás.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Como calcular o quadrado de um número em Python: métodos básicos e avançados

Elevar ao quadrado em Python é fácil: use o operador ** nativo ou experimente NumPy, pow(), math.pow(), operadores bitwise e outras funções para soluções mais versáteis.
Allan Ouko's photo

Allan Ouko

11 min

Ver MaisVer Mais