Cómo seleccionar elementos aleatoriamente de una lista en Python

    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().

     

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *