Numpy
Carregando, aguarde alguns segundos.

4 - Números aleatórios no Numpy

Número aleatório não significa algo diferente a cada vez, mas algo que não pode ser previsto logicamente.

Computadores trabalham em programas, e programas são um conjunto definitivo de instruções.

Então significa que deve haver algum algoritmo para gerar um número aleatório também.

Se houver um programa para gerar um número aleatório, ele pode ser previsto, portanto, não é verdadeiramente aleatório.

Pseudo Aleatório e Verdadeiro Aleatório

Números aleatórios gerados através de um algoritmo de geração são chamados de pseudo-aleatórios.

Não precisamos de números verdadeiramente aleatórios, a menos que esteja relacionado à segurança (por exemplo, chaves de criptografia) ou a base de aplicação seja a aleatoriedade (por exemplo, roletas digitais).

Podemos fazer números verdadeiramente aleatórios? Sim.

Para gerar um número verdadeiramente aleatório em nossos computadores, precisamos obter os dados aleatórios de alguma fonte externa. Essa fonte externa geralmente são nossas teclas, movimentos do mouse, dados na rede etc.

Neste tutorial, usaremos números pseudo-aleatórios, geralmente obtidos do computador utilizando o relógio do sistema.

4.1 - Geração de números aleatórios

O módulo random trabalha com números aleatórios.

Os números aleatórios podem ser de valores de diferentes tipos.

Método randint()

A função randint retorna um número inteiro aleatório entre um ou dois parâmetros.

Abaixo um número inteiro aleatório entre 0 a 100 (ambos inclusive, usando apenas um parâmetro).

from numpy import random
inteiro_aleatorio = random.randint(100)
print(f"Valor e tipo: {inteiro_aleatorio}: {type(inteiro_aleatorio)}")

Abaixo um número inteiro aleatório entre 10 a 20 (ambos inclusive, usando dois parâmetros).

from numpy import random
inteiro_aleatorio = random.randint(10,20)
print(f"Valor e tipo: {inteiro_aleatorio}: {type(inteiro_aleatorio)}")

Método rand()

O método rand() do módulo random retorna um real aleatório entre 0 e 1.

from numpy import random
x = random.rand()
print(x)

Gerar matriz aleatória

No Numpy trabalhamos com matrizes, e você pode usar os dois métodos dos exemplos acima para fazer matrizes aleatórias.

Vetor aleatório de inteiros

O método randint() recebe um argumento nomeado size para especificando ao número de valores aleatórios no vetor (matriz unidimensional) ou matriz (matriz multidimensional).

Matriz 1-D (vetor) contendo 5 inteiros aleatórios entre 0 e 100, com ambos incluídos.

from numpy import random
x = random.randint(100, size=(5))
print(x)

Matriz 2-D com 3 linhas, cada linha contendo 5 inteiros aleatórios de 0 a 100.

from numpy import random
x = random.randint(100, size=(3, 5))
print(x)

O método rand() também permite especificar a forma da matriz.

Exemplo: gere uma matriz 1-D contendo 5 reais aleatórios.

from numpy import random
x = random.rand(5)
print(x)

Exemplo: gere uma matriz 2-D com 3 linhas, cada linha contendo 5 números aleatórios.

from numpy import random
x = random.rand(3, 5)
print(x)

Matriz de escolhas

O método choice() permite gerar um valor aleatório com base em uma matriz de valores, com a função recebendo essa matriz como argumento e retornando aleatoriamente um dos valores.

Exemplo: retorna um dos valores em uma matriz.

from numpy import random
x = random.choice([3, 5, 7, 9])
print(x)

O método choice() também permite retornar uma matriz de valores.

Adicione um sizeparâmetro para especificar a forma da matriz.

Exemplo: gere uma matriz 2-D que consiste nos valores no parâmetro de matriz (3, 5, 7 e 9).

from numpy import random
x = random.choice([3, 5, 7, 9], size=(3, 5))
print(x)

4.2 - Distribuição de dados aleatórios

Distribuição de dados é uma lista de todos os valores possíveis e com que frequência cada valor ocorre.

Essas listas são importantes ao trabalhar com estatística e ciência de dados.

O módulo random oferece métodos que retornam distribuições de dados geradas aleatoriamente.

Distribuição aleatória

Uma distribuição aleatória é um conjunto de números aleatórios que seguem uma certa função de densidade de probabilidade.

Função Densidade de Probabilidade: Uma função que descreve uma probabilidade contínua. ou seja, probabilidade de todos os valores em uma matriz.

Podemos gerar números aleatórios com base em probabilidades definidas usando o método choice() do módulo random.

O método choice() permite especificar a probabilidade para cada valor.

A probabilidade é definida por um número entre 0 e 1, onde 0 significa que o valor nunca ocorrerá e 1 significa que o valor sempre ocorrerá.

Exemplo: gere uma matriz 1-D contendo 100 valores, onde cada valor deve ser 3, 5, 7 ou 9.

A probabilidade de o valor ser 3 é definida como 0,1

A probabilidade de o valor ser 5 é definida como 0,3

A probabilidade de o valor ser 7 é definida como 0,6

A probabilidade de o valor ser 9 é definida como 0

from numpy import random
x = random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(100))
print(x)

A soma de todos os números de probabilidade deve ser 1.

Mesmo se você executar o exemplo acima de 100 vezes, o valor 9 nunca ocorrerá.

Você pode retornar matrizes de qualquer forma e tamanho especificando a forma no parâmetro size.

Exemplo: mesmo exemplo acima, mas retorna uma matriz 2-D com 3 linhas, cada uma contendo 5 valores.

from numpy import random
x = random.choice([3, 5, 7, 9], p=[0.1, 0.3, 0.6, 0.0], size=(3, 5))
print(x)

Permutações aleatórias

Uma permutação refere-se a um arranjo de elementos. Por exemplo, [3, 2, 1] é uma permutação de [1, 2, 3] e vice-versa.

O módulo Numpy Random fornece dois métodos para isso: shuffle() e permutation().

Embaralhando Matrizes

Shuffle significa mudar a disposição dos elementos no local. ou seja, na própria matriz.

Exemplo: embaralhe aleatoriamente os elementos da seguinte matriz:

from numpy import random
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
random.shuffle(arr)
print(arr)

O método shuffle() faz alterações na matriz original.

Gerando Permutação de Arrays

Exemplo:

Gere uma permutação aleatória de elementos da seguinte matriz:

from numpy import random
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(random.permutation(arr))
Arduino
Coautor
Betobyte
Autor
Autores
||| Áreas ||| Estatística ||| Python ||| Projetos ||| Dicas & Truques ||| Quantum ||| Numpy || Python para Iniciantes || Python Básico || Matplotlib || Numpy || Seaborn || Pandas || Django || Estatística para Cientistas de Dados || Python com ML Básico || Python com ML Básico || Aulas | Introdução (introdução) | Desempenho (Desempenho) | UFUNC (ufunc) | Aleatório (random) |