Módulo Python Random

O módulo random é um módulo embutido que nos permite gerar elementos aleatórios.

import random

seed()

O método seed é usado para inicializar o gerador de números aleatórios.

# Define a semente para números aleatórios reprodutíveis
random.seed(1)
random.random()
0.13436424411240122

Definir a semente para um número sempre retornará o mesmo número aleatório:

random.seed(1)
random.random()
0.13436424411240122
random.seed(1)
random.random()
0.13436424411240122
random.seed(1)
random.random()
0.13436424411240122
random.seed(1)
random.random()
0.13436424411240122
random.seed(1)
random.random()
0.13436424411240122

O valor padrão do método seed é o tempo atual do sistema, é por isso que sempre obtemos um número diferente:

# Gera número aleatório sem definir a semente (usa o tempo do sistema)
random.random()
0.8474337369372327
random.random()
0.763774618976614
random.random()
0.2550690257394217

randint()

random.randint(start: int, stop: int)

Este método retorna um número aleatório entre os parâmetros de início e parada fornecidos:

random.randint(1, 5)
3
random.randint(1, 5)
2
random.randint(1, 5)
5
random.randint(1, 5)
1
random.randint(1, 5)
3
random.randint(1, 5)
1

choice()

O método choice retorna um elemento selecionado aleatoriamente de um iterável, como uma list, set ou str:

random.choice([1, 2, 3, 4])
1
random.choice([1, 2, 3, 4])
2
random.choice([1, 2, 3, 4])
4
random.choice([1, 2, 3, 4])
4

shuffle()

O método shuffle recebe um iterável e o embaralha:

my_list = [1, 2, 3, 4]

# Embaralha a lista no local (in place)
random.shuffle(my_list)
my_list
[1, 4, 3, 2]
random.shuffle(my_list)
my_list
[2, 4, 3, 1]
random.shuffle(my_list)
my_list
[4, 2, 3, 1]

sample()

random.sample(iterable, k: int)

sample retorna uma lista com uma seleção aleatória de um iterável. O número de elementos retornados é igual ao parâmetro k:

# Seleciona aleatoriamente k elementos da lista
random.sample([1, 2, 3, 4], 1)
[3]
random.sample([1, 2, 3, 4], 2)
[3, 4]
random.sample([1, 2, 3, 4], 3)
[4, 3, 2]
random.sample([1, 2, 3, 4], 4)
[1, 2, 4, 3]

random()

O método random retorna um número de ponto flutuante aleatório entre 0.0 e 1.0:

random.random()
0.4143139993007743
random.random()
0.17300740157905092
random.random()
0.548798761388153
random.random()
0.7030407620656315

uniform()

O método uniform é semelhante a randint, mas retorna um número de ponto flutuante:

random.uniform(1, 5)
3.697943322009309
random.uniform(1, 5)
2.498812082006561
random.uniform(1, 5)
2.7558465201782525
random.uniform(1, 5)
3.0337059529999273