Cómo seleccionar elementos aleatoriamente de una lista en Python

C

Introducción

La selección de un elemento o valor aleatorio de una lista es una tarea común, ya sea para un resultado aleatorio de una lista de recomendaciones o simplemente para un mensaje aleatorio.

En este artículo, veremos cómo seleccionar elementos al azar de una lista en Python. Cubriremos la recuperación de ambos elementos aleatorios singulares, así como la recuperación de múltiples elementos, con y sin repetición.

Seleccionar un elemento aleatorio de la lista de Python

El enfoque más intuitivo y natural para resolver este problema es generar un número aleatorio que actúa como índice para acceder a un elemento de la lista.

Para implementar este enfoque, veamos algunos métodos para generar números aleatorios en Python: random.randint() y random.randrange(). Podemos usar adicionalmente random.choise() y proporcionar un iterable, lo que da como resultado un elemento aleatorio de ese iterable que se devuelve.

Usando random.randint ()

random.randint(a, b) devuelve un entero aleatorio entre a y b inclusivo.

Queremos un índice aleatorio en el rango de 0 a len(list)-1, para obtener un índice aleatorio de un elemento de la lista:

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randint(0,len(letters)-1)

print(letters[random_index])

Ejecutar este código varias veces nos da como resultado:

e
c
f
a

Usando random.randrange ()

random.randrange(a) es otro método que devuelve un número aleatorio n tal que 0 <= n < a:

import random

letters = ['a', 'b', 'c', 'd', 'e', 'f']
random_index = random.randrange(len(letters))

print(letters[random_index])

Ejecutar este código varias veces producirá algo como:

f
d
d
e

Como random.randrange(len(letters)) devuelve un número generado aleatoriamente en el rango 0 a len(letters) - 1, lo usamos para acceder a un elemento al azar en letters, como hicimos en el enfoque anterior.

Este enfoque es un poquito más simple que el anterior, simplemente porque no especificamos el punto de partida, que por defecto es 0.

Usando random.choice ()

Ahora, una solución aún mejor que la anterior sería usar random.choice() ya que esta es precisamente la función diseñada para resolver este problema:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.choice(letters))

Ejecutar esto varias veces da como resultado:

b
e
e
f
e

Seleccionar más de un elemento aleatorio de la lista de Python

Usando random.sample ()

El primer método que podemos utilizar para seleccionar más de un elemento al azar es random.sample(). Produce una muestra, basada en la cantidad de muestras que nos gustaría observar:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.sample(letters, 3))

Esto devuelve una lista:

['d', 'c', 'a']

Este método selecciona elementos sin reemplazo, es decir, selecciona sin duplicados ni repeticiones.

Si ejecutamos esto:

print(random.sample(letters, len(letters)))

Como no devuelve duplicados, solo devolverá nuestra lista completa en un orden aleatorio:

['a', 'e', 'c', 'd', 'f', 'b']

Usando random.choices ()

Similar a la función anterior, random.choices() devuelve una lista de elementos seleccionados aleatoriamente de un iterable dado. Sin embargo, no realiza un seguimiento de los elementos seleccionados, por lo que también puede obtener elementos duplicados:

import random 

letters = ['a', 'b', 'c', 'd', 'e', 'f']

print(random.choices(letters, k=3))

Esto devuelve algo parecido a:

['e', 'f', 'f']

Además, si ejecutamos:

print(random.choices(letters, k = len(letters)))

Puede devolver algo como:

['d', 'e', 'b', 'd', 'd', 'd']

random.choices devuelve un k-Lista de tamaño de elementos seleccionados al azar con reemplazo.

Este método también se puede utilizar para implementar elecciones aleatorias ponderadas que puede explorar más en el documentación oficial de Python.

Conclusión

En este artículo, hemos explorado varias formas de recuperar uno o varios elementos seleccionados al azar de una lista en Python.

Hemos accedido a la lista en índices aleatorios usando randint() y randrange(), pero también obtuve elementos aleatorios usando choice() y sample().

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad