Números aleatórios podem ser gerados usando as funções random(), uniform(), randange(), e randint() no módulo aleatório da biblioteca padrão Python.
O módulo aleatório está incluído na biblioteca padrão, pelo que não é necessária qualquer instalação adicional. Evidentemente, é necessário importá-lo.
A seguinte informação é fornecida aqui.
random.random()
(Número de ponto flutuante entre 0,0 e 1,0)random.uniform()
(Qualquer gama de números de ponto flutuante)- Gerar números aleatórios que sigam uma distribuição normal, distribuição gaussiana, etc.
random.randrange()
(Inteiro de alcance e passo arbitrário)random.randint()
(Um número inteiro em qualquer intervalo)- Geração de uma lista com números aleatórios como elementos
- Lista de números de pontos flutuantes aleatórios
- Lista de números inteiros aleatórios
- Inicializar o gerador de números aleatórios (fixar o número aleatório de sementes)
Ver o artigo seguinte sobre como extrair ou ordenar aleatoriamente elementos de uma lista.
- Artigos relacionados:Selecção de elementos aleatórios de uma lista em Python usando escolha(), amostra(), escolhas()
- random.random() (Número de ponto flutuante entre 0,0 e 1,0)
- random.uniform() (Qualquer gama de números de ponto flutuante)
- Gerar números aleatórios que sigam uma distribuição normal, distribuição gaussiana, etc.
- random.randrange() (Inteiro de alcance e passo arbitrário)
- random.randint() (Um número inteiro em qualquer intervalo)
- Geração de uma lista com números aleatórios como elementos
- Inicializar o gerador de números aleatórios (fixar o número aleatório de sementes)
random.random() (Número de ponto flutuante entre 0,0 e 1,0)
A função do módulo aleatório() gera um número aleatório de ponto flutuante de tipo flutuante que está entre 0,0 e 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (Qualquer gama de números de ponto flutuante)
uniform(a, b)
As funções deste módulo aleatório geram números aleatórios do tipo de ponto flutuante em qualquer uma das seguintes gamas
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Os dois argumentos podem ser ou maiores ou menores; se forem iguais, naturalmente só devolverão esse valor. O valor de retorno é sempre um flutuador.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
O argumento também pode ser especificado como um carro alegórico.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Se o valor de b está incluído no intervalo depende do seguinte arredondamento, tal como documentado.a + (b-a) * random.random()
Se o valor do ponto final b está ou não no intervalo depende do arredondamento do ponto flutuante na seguinte equação
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Gerar números aleatórios que sigam uma distribuição normal, distribuição gaussiana, etc.
As funções aleatório() e uniforme() acima geram números aleatórios uniformemente distribuídos, mas também há funções para gerar números de ponto flutuante que seguem a seguinte distribuição.
- distribuição beta:
random.betavariate()
- distribuição exponencial:
random.expovariate()
- distribuição gama:
random.gammavariate()
- Distribuição gaussiana:
random.gauss()
- distribuição lognormal:
random.lognormvariate()
- distribuição normal:
random.normalvariate()
- Distribuição de Von Mises:
random.vonmisesvariate()
- Distribuição de Pareto:
random.paretovariate()
- Distribuição Weibull:
random.weibullvariate()
Os parâmetros de cada distribuição são especificados por argumentos. Ver a documentação oficial para mais detalhes.
random.randrange() (Inteiro de alcance e passo arbitrário)
randrange(start, stop, step)
A função deste módulo aleatório devolve um elemento seleccionado aleatoriamente a partir dos seguintes elementos.range(start, stop, step)
Tal como com o intervalo(), os argumentos começam e passo podem ser omitidos. Se forem omitidos, start=0 e step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
A etapa do argumento pode ser definida para gerar um inteiro aleatório par ou ímpar, ou um inteiro aleatório que é um múltiplo de três.
Por exemplo, se o início for uniforme e o passo=2, apenas os números inteiros da gama podem ser obtidos de forma aleatória.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Um número inteiro em qualquer intervalo)
randint(a, b)
A função deste módulo aleatório retorna o seguinte inteiro aleatório int.a <= n <= b
randrange(a, b + 1)
Equivalente a isto; note que o valor de b também está incluído na gama.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Geração de uma lista com números aleatórios como elementos
Nesta secção, explicaremos como utilizar o módulo aleatório da biblioteca padrão para gerar uma lista com números aleatórios como elementos.
Lista de números aleatórios com flutuadores de ponto flutuante
Para gerar uma lista cujos elementos são números aleatórios de ponto flutuante, combinar as funções aleatório() e uniforme() com a notação de compreensão da lista.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
No exemplo acima, é utilizado o intervalo(), mas também são possíveis listas e tuplos para o número desejado de elementos. Para mais pormenores sobre a compreensão da lista, consulte o artigo seguinte.
- Artigos relacionados:Usando a notação Python list comprehensions
Lista de números inteiros int aleatórios
Ao gerar uma lista cujos elementos são números inteiros aleatórios, a combinação do randange() e randint() acima com a notação de compreensão da lista pode resultar em valores duplicados.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Se quiser fazer uma sequência aleatória de inteiros sem duplicação, extraia os elementos de alcance() com um alcance arbitrário usando random.sample().
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
Para mais informações sobre random.sample(), consulte por favor o artigo seguinte.
- Artigos relacionados:Selecção de elementos aleatórios de uma lista em Python usando escolha(), amostra(), escolhas()
Inicializar o gerador de números aleatórios (fixar o número aleatório de sementes)
Ao dar um inteiro arbitrário à função semente() do módulo aleatório, a semente do número aleatório pode ser fixada e o gerador de números aleatórios pode ser inicializado.
Após a inicialização com a mesma semente, o valor aleatório é sempre gerado da mesma forma.
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025