Pular para o conteúdo

Como usar o np.random.normal no Python?

[

Como Gerar Números Aleatórios Distribuídos Normalmente com NumPy

A distribuição normal é uma das distribuições de probabilidade mais úteis, pois modela muito bem muitos fenômenos naturais. Com o NumPy, é possível criar amostras de números aleatórios a partir da distribuição normal.

Como Usar o NumPy para Gerar Números Aleatórios Distribuídos Normalmente

O NumPy inclui um subpacote completo, numpy.random, dedicado ao trabalho com números aleatórios. Por motivos históricos, este pacote inclui muitas funções. No entanto, normalmente você deve começar instanciando um gerador de números aleatórios padrão (RNG):

import numpy as np
rng = np.random.default_rng()

O RNG pode gerar uma variedade de distribuições, incluindo a distribuição normal. Para gerar uma amostra de números aleatórios distribuídos normalmente, você usa a função np.random.normal():

import numpy as np
mean = 0
std_dev = 1
size = 1000
data = np.random.normal(mean, std_dev, size)

Neste exemplo, a média é 0 e o desvio padrão é 1. Estamos gerando uma amostra de 1000 números aleatórios distribuídos normalmente.

Plotando os Números Distribuídos Normalmente

Uma maneira comum de visualizar os números distribuídos normalmente é criar um histograma. Você pode fazer isso usando a biblioteca Matplotlib:

import matplotlib.pyplot as plt
bins = 30
plt.hist(data, bins=bins)
plt.xlabel('Valores')
plt.ylabel('Frequência')
plt.title('Amostra de Números Distribuídos Normalmente')
plt.show()

Este código irá gerar um histograma dos números gerados, com o eixo x representando os valores e o eixo y representando a frequência em que esses valores ocorrem.

Especificando a Média e o Desvio Padrão

Você pode especificar valores personalizados para a média e o desvio padrão ao gerar números aleatórios distribuídos normalmente. Por exemplo:

import numpy as np
mean = 5
std_dev = 2
size = 1000
data = np.random.normal(mean, std_dev, size)

Neste exemplo, estamos gerando uma amostra de 1000 números aleatórios distribuídos normalmente com média 5 e desvio padrão 2.

Trabalhando com Números Aleatórios no NumPy

O NumPy oferece uma variedade de funções para trabalhar com números aleatórios. Por exemplo, você pode calcular a média, o desvio padrão e outros valores estatísticos da amostra gerada:

import numpy as np
mean = 0
std_dev = 1
size = 1000
data = np.random.normal(mean, std_dev, size)
mean_value = np.mean(data)
std_dev_value = np.std(data)
min_value = np.min(data)
max_value = np.max(data)

Você também pode manipular os números gerados utilizando operações matemáticas comuns:

import numpy as np
mean = 0
std_dev = 1
size = 1000
data = np.random.normal(mean, std_dev, size)
data_squared = np.square(data)
data_sum = np.sum(data)
data_mean = np.mean(data)

Iterando em Direção à Normalidade com o Teorema do Limite Central

O Teorema do Limite Central é um conceito importante na estatística que descreve como a média de uma amostra se aproxima de uma distribuição normal à medida que o tamanho da amostra aumenta. Você pode experimentar isso gerando várias amostras e calculando suas médias:

import numpy as np
mean = 0
std_dev = 1
sample_size = 50
num_samples = 1000
sample_means = []
for _ in range(num_samples):
sample = np.random.normal(mean, std_dev, sample_size)
sample_mean = np.mean(sample)
sample_means.append(sample_mean)
plt.hist(sample_means, bins=30)
plt.xlabel('Médias das Amostras')
plt.ylabel('Frequência')
plt.title('Distribuição das Médias das Amostras')
plt.show()

Este código irá gerar um histograma das médias das amostras aleatórias. Você verá que a distribuição se aproxima de uma distribuição normal à medida que o número de amostras aumenta.

Conclusão

Gerar números aleatórios distribuídos normalmente é uma tarefa comum na análise estatística e em várias aplicações de aprendizado de máquina. O NumPy fornece uma maneira fácil e eficiente de fazer isso. Com várias funções, você pode especificar a média e o desvio padrão desejados, gerar amostras de diferentes tamanhos e realizar várias operações estatísticas.

Agora você tem as ferramentas necessárias para trabalhar com números aleatórios distribuídos normalmente usando o NumPy. Experimente e explore todas as possibilidades que este pacote oferece!