Python random: Funções para gerar números aleatórios

O módulo Python random dispõe de uma série de recursos para a geração de números aleatórios em diferentes formatos (como de inteiros e de vírgula flutuante), para controlar a aleatoriedade das sequências geradas, para realizar distribuições aleatórias, para embaralhar sequências e também para fins criptográficos. Nosso artigo introdutório sobre Python random apresenta suas principais características, apresenta as funções mais usadas e lhe ensina a aplicá-las em códigos.

O que é o módulo Python random?

O módulo Python random é uma biblioteca integrada que fornece funcionalidades para a geração de números aleatórios e a execução de operações randômicas por aplicações. Ele também dispõe de funções capazes de criar números pseudoaleatórios de alta qualidade que podem ser utilizados nas mais diversas situações, como em simulações e testes, no desenvolvimento de jogos e na segurança criptográfica.

Uma das características mais importantes do módulo random de Python é capacidade que ele tem de se repetir de forma determinística e previsível. Desde que seja definido um valor inicial (valor semente ou seed), a geração randômica do módulo random pode ser reproduzida, o que é especialmente útil em testes, experimentos e simulações que exigem a geração repetida de dados aleatórios consistentes.

Lista de funções do módulo Python random

O módulo Python random oferece suporte a diferentes funções capazes de gerar e processar números aleatórios. Ainda, você também pode definir funções personalizadas para controlar ou modificar o comportamento da geração de números aleatórios. Compilamos, abaixo, uma tabela com as principais funções já estabelecidas de Random, assim como a utilidade de cada uma delas:

F unção Explicação
seed(a=None, version=2) Define o valor inicial (seed) para a geração de números aleatórios.
getstate() Retorna o estado atual da geração de números aleatórios como objeto.
setstate(state) Redefine o estado da geração de números aleatórios com base em um objeto de estado.
getrandbits(k) Retorna um número inteiro com k bits.
randrange(start, stop, step) Gera um número inteiro aleatório a partir de um intervalo especificado.
randint(a, b) Retorna um número inteiro aleatório dentro de um intervalo especificado.
choice(seq) Retorna um elemento aleatório de uma sequência especificada.
choices(population, weights=None, *, cum_weights=None, k=1) Gera uma lista com* k* elementos selecionados aleatoriamente dentre uma população; opcionalmente, é possível definir as probabilidades.
sample(k, population) Cria uma lista com k elementos selecionados aleatoriamente dentre a população, sem duplicatas.
shuffle(x) Mistura os elementos de uma lista de forma aleatória.
random() Retorna um número de vírgula flutuante aleatório dentro do intervalo de 0 a 1.
uniform(a, b) Retorna um número de vírgula flutuante aleatório dentro do intervalo especificado, incluindo os valores inicial e final.
triangular(low, high, mode) Gera um número de vírgula flutuante aleatório dentro de um intervalo de distribuição triangular.
betavariate(alpha, beta) Retorna um número de vírgula flutuante aleatório a partir de uma distribuição beta.
expovariate(lambd) Retorna um número de vírgula flutuante aleatório a partir de uma distribuição exponencial.
gammavariate(alpha, beta) Gera um número de vírgula flutuante aleatório a partir de uma distribuição gama.
gauss(mu, sigma) Retorna um número de vírgula flutuante aleatório a partir de uma distribuição de Gauss.
lognormvariate(mu, sigma) Gera um número de vírgula flutuante aleatório a partir de uma distribuição normal logarítmica.
normalvariate(mu, sigma) Retorna um número de vírgula flutuante aleatório a partir de uma distribuição normal.
vonmisesvariate(mu, kappa) Retorna um número de vírgula flutuante aleatório a partir de uma distribuição de von Mises.
paretovariate(alpha) Retorna um número de vírgula flutuante aleatório a partir de uma distribuição de Pareto.
weibullvariate(alpha, beta) Retorna um número de vírgula flutuante aleatório a partir de uma distribuição de Weibull.

Python random para selecionar elementos aleatórios de uma lista

Se você precisa selecionar diferentes elementos de uma lista aleatoriamente, pode fazer uso da função choices(seq, k=n), do módulo random de Python. Na estrutura dessa função, n faz menção ao número de elementos aleatórios desejados, como você pode perceber no exemplo abaixo:

import random
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Randomly selecting an element from the list
random_elements = random.choices(my_list, k=3)
print("Randomly selected elements:", random_element)
python

Nesse código, fizemos uso da função choices() para selecionar randomicamente três elementos da lista que chamamos de my_list. Assim sendo, os resultados serão retornados no formato de uma lista que conterá apenas três elementos aleatórios dos cinco previamente listados.

Hospedagem web com consultor pessoal

Rápido e escalável, confie na hospedagem da IONOS, que inclui domínio grátis no primeiro ano e endereço de e-mail!

  • Domínio
  • SSL Wildcard
  • Suporte 24 horas

Python random para embaralhar uma lista

A função shuffle() de random consegue reordenar elementos de listas Python de forma aleatória. Observe o código abaixo para entender melhor:

import random
# A list of elements
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Shuffle the elements in the list
random.shuffle(my_list)
print("Shuffled list:", my_list) # Example Output: Shuffled list: ['Strawberry', 'Banana', 'Apple', 'Cherry', 'Orange']
python

Perceba que, como mostra o exemplo, a função shuffle() não gera uma lista nova, mas sim altera a lista já existente. Ou seja, ao aplicar a função shuffle() do módulo random de Python, você terá sua lista original embaralhada aleatoriamente, o que significará que seus elementos mudarão de lugar.

Python random para definir um valor inicial

Se você quer utilizar a função random.seed() do módulo Python random para definir um valor inicial (seed) específico e garantir a reprodutibilidade dos resultados, deve iniciar a geração de números com base em um valor semente. Dessa forma, se você definir o mesmo valor semente em outro momento, o mesmo conjunto de números aleatórios será gerado pelo seu código. O exemplo ilustra a situação:

import random
# Setting the seed value to 42
random.seed(42)
# Generating random numbers
print(random.random())  # Example output: 0.6394267984578837
print(random.random())  # Example output: 0.025010755222666936
# Resetting the seed value to 42
random.seed(42)
# Generating random numbers again
print(random.random())  # Example output: 0.6394267984578837 (identical to the previous value)
print(random.random())  # Example output: 0.025010755222666936 (identical to the previous value)
python

Após a definição de um valor semente qualquer, os números aleatórios solicitados foram gerados e exibidos. Como esse mesmo valor semente foi novamente definido pelo módulo random somado à função seed, os mesmos números aleatórios foram igualmente gerados, uma segunda vez. No nosso exemplo, por duas vezes random.seed definiu o valor semente como 42. Assim sendo, os mesmos números aleatórios tiveram de ser gerados.

Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top