Curso
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.seedusando a seed42. - Inicializar um array vazio, random_numbers, com 100.000 posições para armazenar os
números aleatórios. Usenp.empty(100000)para isso. - Escrever um laço
forpara sortear 100.000 números comnp.random.random(), armazenando-os no arrayrandom_numbers. Para isso, itere sobrerange(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:

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.
