Cómo seleccionar al azar un elemento de una lista en Python

Rayven Esplanada 10 octubre 2023
  1. Usa el módulo random para seleccionar un elemento aleatorio de una lista en Python
  2. Use el módulo secrets para seleccionar un ítem aleatorio de una lista en Python
  3. Use el módulo NumPy para seleccionar un elemento aleatorio de una lista en Python
Cómo seleccionar al azar un elemento de una lista en Python

Este tutorial muestra cómo seleccionar un elemento aleatorio de una lista en Python. Hay múltiples y sencillas maneras de lograrlo, todas ellas implican la importación de módulos de Python.

Este tutorial cubrirá las soluciones que requieren los módulos random, secrets, y NumPy.

Tengan en cuenta que todas estas soluciones que se presentarán harán uso de pseudo generadores de números aleatorios (PRNG).

Usa el módulo random para seleccionar un elemento aleatorio de una lista en Python

El módulo más utilizado para la aleatorización es el módulo random. Este módulo implementa funciones de utilidad pseudoaleatorias para apoyar las operaciones que implican aleatorización.

Digamos que queremos elegir un nombre aleatorio de una lista como si fuera una boleta.

["John", "Juan", "Jane", "Jack", "Jill", "Jean"]

Para elegir un nombre aleatorio de esta lista, usaremos random.choice(), que seleccionará un elemento de los datos disponibles que se den.

import random

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return random.choice(names)


print("The name selected is: ", selectRandom(names))

La salida, por supuesto, será variable y aleatoria. Así que puede ser cualquiera de los seis nombres que se almacenan dentro de la variable names.

Use el módulo secrets para seleccionar un ítem aleatorio de una lista en Python

El módulo de secrets se usa esencialmente para el mismo propósito que el de random. Sin embargo, secrets proporciona un método criptográficamente seguro para implementar el PRNG.

En aplicaciones de la vida real como el almacenamiento de contraseñas, autenticación, cifrado y descifrado, y fichas. secrets es mucho más seguro que el uso de random, ya que sólo sirve para simulaciones u operaciones que no manejen datos sensibles.

En este problema, ambos módulos proporcionan el mismo valor, ya que no estamos manejando ningún dato sensible y lo hacemos para la simulación.

Usaremos la misma lista de names para este ejemplo. secrets también tiene una versión de la función choice() que produce la misma salida de variable que random.choice().

import secrets

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return secrets.choice(names)


print("The name selected is: ", selectRandom(names))

Use el módulo NumPy para seleccionar un elemento aleatorio de una lista en Python

El módulo NumPy también tiene funciones de utilidad para la aleatorización y tiene algunas herramientas expansivas como argumentos para su función choice().

De nuevo, usaremos la misma lista de names para demostrar la función numpy.random.choice().

import numpy

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return numpy.random.choice(names)


print("The name selected is: ", selectRandom(names))

La función devolverá la misma variable de salida que los otros dos módulos produjeron.

NumPy también proporciona otros argumentos para que choice() genere múltiples salidas en forma de lista.

El segundo argumento acepta un valor entero para determinar cuántos elementos aleatorios devolver. Digamos que queremos devolver 4 ítems aleatorios de la lista names.

def selectRandom(names):
    return numpy.random.choice(names, 4)


print("The names selected are: ", selectRandom(names))

Salida de muestra:

The names selected are: ['John', 'Jill', 'Jill', 'Jill']

Existe la probabilidad de que el mismo ítem se repita más de una vez en el resultado aleatorio.

Si prefiere que los ítems del resultado sean únicos, podemos pasar un tercer argumento booleano, que permite el muestreo aleatorio sin reemplazo.

def selectRandom(names):
    return numpy.random.choice(names, 4, False)

Salida de la muestra:

The names selected are: ['Jill', 'John', 'Jack', 'Jean']

La función siempre producirá una lista única sin elementos duplicados.

Un gran inconveniente si añadimos el tercer argumento es el tiempo de ejecución de la función, ya que ejecuta una tarea añadida para comprobar si hay duplicados y sustituirlos por un elemento que aún no existe dentro de los resultados.

En resumen, la selección de ítems aleatorios de una lista de Python se puede lograr utilizando uno de estos tres módulos: random, secrets, o NumPy. Cada uno de ellos tiene sus ventajas y desventajas.

Si quieres tener un método PRNG criptográficamente seguro, entonces secrets es el mejor módulo para eso. Si tu propósito es sólo para la simulación o la manipulación de datos no sensibles, usa el random o el NumPy. Si quieres más de un resultado aleatorio, entonces usa NumPy.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artículo relacionado - Python List