Librería random en python para la generación de números aleatorios

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.

Temario

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 random

Esta 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, choice

Esto 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.

libreria random - Qué hace un uniform random

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:

libreria random - Qué es la librería random

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

libreria random - Qué hace la función random

import randommi_lista = ["manzana", "plátano", "cereza"]print(random.choice(mi_lista)) # Output: Un elemento aleatorio de mi_lista

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

libreria random - Qué hace random randrange

import randommi_lista = [1, 2, 3, 4, 5]random.shuffle(mi_lista)print(mi_lista) # Output: La lista mi_lista con sus elementos reordenados aleatoriamente

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

Subir