random.choices

Nombre completo
random.choices
Librería
random
Sintaxis

random.choices(population, weights = None, *, cum_weights = None, k = 1)

Descripción

La función random.choices devuelve una lista de k elementos extraídos aleatoriamente con reemplazo de la secuencia population.

Por defecto, la probabilidad de cada elemento de population de ser extraído es la misma, pero ésta puede ser modificada de dos formas:

  1. Especificando los pesos relativos de cada elemento con el parámetro weights. Por ejemplo, si la secuencia population tiene cinco elementos, pasar la lista [1, 1, 2, 2, 1] como pesos relativos supondría que los elementos cuyos índices son 2 y 3 tendrían el doble de probabilidad de ser extraídos que los otros tres elementos.
  2. Especificando los pesos acumulados con el parámetro cum_weights. Por ejemplo, la lista de pesos acumulados [1, 2, 4, 6, 7] sería equivalente a la lista de pesos relativos [1, 1, 2, 2, 1].

En ambos casos, la lista de pesos deberá tener la misma longitud que population. Los pesos relativos pueden tomar el valor cero para algunos elementos de population, pero si todos los pesos relativos son cero, la función devuelve un error.

Al tratarse de una extracción con repetición, el valor k puede ser mayor que el número de elementos de population.

Parámetros
  • population: Secuencia de la que extraer los elementos.
  • weights: Pesos relativos de los elementos de population.
  • cum_weights: Pesos acumulados de los elementos de population.
  • k: Número de elementos a extraer.
Resultado

La función random.choices devuelve una lista.

Ejemplos

Si partimos de la siguiente lista conteniendo los días de la semana:

días = ["Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"]

...podemos extraer tres días aleatorios con repetición con el siguiente código:

día = random.choices(population = días, k = 3)
día
['Lunes', 'Viernes', 'Viernes']

Podemos especificar los pesos -relativos, en este ejemplo- de cada elemento de la secuencia de la que realizar la extracción:

pesos = [1, 1, 1, 1, 1, 5, 5]

Estos pesos suponen que la probabilidad de seleccionar el valor "Sábado" o el valor "Domingo" es cinco veces superior a la probabilidad de seleccionar cualquier otro. Si extraemos, por ejemplo, cinco elementos, podemos obtener el siguiente resultado:

n = random.choices(días, pesos, k = 5)
n
['Martes', 'Sábado', 'Viernes', 'Domingo', 'Sábado']

Algunos de los pesos pueden tomar el valor cero -pero no todos-. Por ejemplo:

pesos = [0, 0, 0, 0, 0, 0, 1]
n = random.choices(días, pesos, k = 3)
n
['Domingo', 'Domingo', 'Domingo']
Enviado por admin el Jue, 11/03/2021 - 17:26