Método sample do módulo random
O método sample
do módulo random
retorna uma amostra aleatória de elementos de
uma sequência. No primeiro parâmetro do
método, indicamos a sequência, no
segundo parâmetro - a quantidade de elementos,
que queremos selecionar aleatoriamente.
No terceiro parâmetro nomeado opcional
counts
podemos definir uma lista de
elementos para repetição. Isso permite
aumentar a probabilidade de amostragem de determinados
elementos. Observe que
o terceiro parâmetro do método foi adicionado apenas
a partir da versão Python 3.9
.
Sintaxe
import random
random.sample(sequência, quantidade de elementos, [counts=repetição])
Exemplo
Vamos obter três elementos aleatórios de uma lista:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
Resultado da execução do código:
[2, 1, 5]
Exemplo
Vamos também tentar obter uma amostra de elementos aleatórios de uma tupla:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
Resultado da execução do código:
[3, 2]
Exemplo
Também é possível selecionar elementos de
uma sequência gerada pela
função range
:
print(random.sample(range(0, 10), 3))
Resultado da execução do código:
[0, 8, 9]
Exemplo
Agora vamos pegar uma lista e usar o
parâmetro counts
para atribuir repetições
para cada elemento da lista. No nosso
caso, deixe o primeiro elemento repetir
duas vezes, o segundo - três, e o terceiro - quatro
vezes. Também é necessário especificar o nome do parâmetro
k
para a saída da quantidade de elementos:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
Este código é equivalente ao seguinte:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # lista efetivamente assim
print(random.sample(lst, 3))
Exemplo
Agora vamos tentar obter elementos de um conjunto:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
O seguinte erro será retornado:
[5, 2]
DeprecationWarning: Amostragem de um conjunto descontinuada
desde Python 3.9 e será removida em uma versão subsequente.
print(random.sample(st, 2))
Isso ocorre porque a partir da versão Python
3.9
não há suporte para
obter amostras de um conjunto.