01/06/2015
La librería random en Python es una herramienta fundamental para cualquier programador que necesite generar números aleatorios. Desde simples juegos hasta complejas simulaciones, la capacidad de producir secuencias aleatorias es esencial. Esta tutorial proporciona una explicación detallada de las funciones más importantes de esta librería, incluyendo ejemplos prácticos y comparaciones.

Qué es la librería random
La librería random de Python proporciona una variedad de funciones para generar números pseudoaleatorios. Es importante destacar que estos números no son verdaderamente aleatorios, sino que se generan a partir de un algoritmo determinista que, a pesar de producir secuencias aparentemente impredecibles, se basa en un valor inicial (semilla). La calidad de la aleatoriedad depende de la complejidad del algoritmo y de la elección de la semilla. Para usar las funciones de esta librería, primero debemos importarla. Hay varias maneras de hacerlo:
Importando la librería completa:
import randomEsta forma importa toda la librería, y para usar las funciones se debe especificar el nombre de la librería seguido del nombre de la función, por ejemplo: random.randint(1,10)
Importando funciones específicas:
from random import randint, randrange, choiceEsto importa sólo las funciones randint, randrangey choice. Para usarlas, sólo se necesita escribir el nombre de la función.
Funciones principales de la librería random
A continuación se detallan algunas de las funciones más utilizadas de la librería random :
randint(a, b)
Esta función genera un número entero aleatorio entre ay b, ambos inclusive. adebe ser menor o igual a b.

import randomprint(random.randint(1, 10)) # Output: Un número entero entre 1 y 10 (inclusive)randrange(inicio, fin, paso)
Similar a la función range(), randrange()genera un número entero aleatorio dentro de un rango especificado. Acepta uno, dos o tres argumentos:

- Un argumento: genera un número entero aleatorio entre 0 y el argumento dado (exclusivo).
- Dos argumentos: genera un número entero aleatorio entre el primer argumento (inclusivo) y el segundo argumento (exclusivo).
- Tres argumentos: genera un número entero aleatorio con un paso específico entre el primer argumento (inclusivo) y el segundo argumento (exclusivo).
import randomprint(random.randrange(10)) # Output: Un número entero entre 0 y 9print(random.randrange(5, 15)) # Output: Un número entero entre 5 y 14print(random.randrange(1, 10, 2)) # Output: Un número entero entre 1 y 9, con paso 2 (1, 3, 5, 7, 9)random()
Genera un número decimal aleatorio entre 0.0 (inclusive) y 0 (exclusivo).
import randomprint(random.random()) # Output: Un número decimal entre 0.0 y 0 (exclusivo)uniform(a, b)
Genera un número decimal aleatorio entre ay b(ambos inclusive).
import randomprint(random.uniform(5, 5)) # Output: Un número decimal entre 5 y 5 (inclusive)choice(secuencia)
Selecciona un elemento aleatorio de una secuencia (lista, tupla, string).

import randommi_lista = ["manzana", "plátano", "cereza"]print(random.choice(mi_lista)) # Output: Un elemento aleatorio de mi_listashuffle(secuencia)
Esta función modifica la secuencia original, reordenando sus elementos aleatoriamente. Tener en cuenta que esta función cambia la lista in-place, no devuelve una nueva lista.

import randommi_lista = [1, 2, 3, 4, 5]random.shuffle(mi_lista)print(mi_lista) # Output: La lista mi_lista con sus elementos reordenados aleatoriamentesample(secuencia, k)
Esta función devuelve una lista con kelementos seleccionados aleatoriamente de la secuencia, sin reemplazo. A diferencia de shuffle, esta función no modifica la secuencia original.
import randommi_lista = [1, 2, 3, 4, 5]muestra = random.sample(mi_lista, 3)print(muestra) # Output: Una lista con 3 elementos aleatorios de mi_lista, sin reemplazo.Tabla Comparativa de Funciones
| Función | Descripción | Tipo de dato devuelto |
|---|---|---|
randint(a, b) | Número entero aleatorio entre a y b (inclusive) | int |
randrange(inicio, fin, paso) | Número entero aleatorio dentro de un rango | int |
random() | Número decimal aleatorio entre 0.0 y 0 (exclusivo) | float |
uniform(a, b) | Número decimal aleatorio entre a y b (inclusive) | float |
choice(secuencia) | Elemento aleatorio de una secuencia | Depende de la secuencia |
shuffle(secuencia) | Reordena los elementos de una secuencia aleatoriamente (in-place) | None |
sample(secuencia, k) | Muestra aleatoria de k elementos de una secuencia sin reemplazo | list |
Consideraciones Importantes
Es crucial recordar que la librería random genera números pseudoaleatorios. Para aplicaciones que requieren una alta seguridad o una aleatoriedad más robusta, como la criptografía, es necesario utilizar generadores de números aleatorios criptográficamente seguros, como los que se encuentran en la librería secrets.
La semilla del generador de números aleatorios puede ser fijada usando la función random.seed(valor). Esto permite reproducir la misma secuencia de números aleatorios cada vez que se ejecuta el programa. Si no se especifica una semilla, el generador se inicializa con un valor por defecto, que suele depender del tiempo del sistema.
Ejemplos Avanzados
La librería randompuede usarse para simular diversos fenómenos. A continuación, se muestra un ejemplo de cómo simular el lanzamiento de una moneda 100 veces:
import randomresultados = []for _ in range(100): resultados.append(random.choice(["Cara", "Cruz"]))print(resultados) #Output: Una lista con 100 elementos, cada uno "Cara" o "Cruz".Otro ejemplo podría ser la generación de una contraseña aleatoria usando la función choicey un conjunto de caracteres:
import randomimport stringlongitud_contraseña = 12caracteres = string.ascii_letters + string.digits + string.punctuationcontraseña = ''.join(random.choice(caracteres) for i in range(longitud_contraseña))print(contraseña)Conclusión
La librería random de Python ofrece una herramienta flexible y poderosa para generar números aleatorios en una variedad de contextos. Conocer sus funciones y posibilidades permite desarrollar programas más interactivos y dinámicos. Es fundamental entender las limitaciones de su aleatoriedad y considerar el uso de generadores más robustos cuando la seguridad es una prioridad.
Si quieres conocer otros artículos parecidos a Librería random en python para la generación de números aleatorios puedes visitar la categoría Libros y Librerías.
