El módulo random de Python cuenta con diversas funciones para generar números alea­to­rios en di­fe­re­n­tes formatos, desde números enteros hasta números en coma flotante, o se­le­c­cio­nar elementos de listas.

¿Qué es el módulo Python random?

El módulo Python random es una bi­blio­te­ca integrada con la que se pueden generar números alea­to­rios y realizar ope­ra­cio­nes alea­to­rias en los programas. Dispone de varias funciones para generar números pseu­do­alea­to­rios que pueden uti­li­zar­se en muchos ámbitos, desde la si­mu­la­ción hasta el de­sa­rro­llo de juegos y tareas cri­p­to­grá­fi­cas.

Una de sus ca­ra­c­te­rí­s­ti­cas im­po­r­ta­n­tes es su capacidad de re­pro­du­ci­bi­li­dad. Al es­pe­ci­fi­car un valor inicial o semilla, los re­su­l­ta­dos de la ge­ne­ra­ción de números alea­to­rios pueden re­pli­car­se, lo que resulta útil para realizar pruebas, ex­pe­ri­me­n­tos y si­mu­la­cio­nes que requieren datos alea­to­rios co­n­si­s­te­n­tes.

Lista de funciones del módulo random

El módulo random de Python contiene distintos métodos para generar y procesar números alea­to­rios. En la siguiente tabla se han resumido sus funciones y ca­ra­c­te­rí­s­ti­cas:

Nombre de la función Ex­pli­ca­ción
seed(a=None, version=2) Establece el valor inicial (semilla) para el generador de números alea­to­rios.
getstate() Devuelve el estado actual del generador de números alea­to­rios como objeto.
setstate(state) Re­s­ta­ble­ce el estado del generador de números alea­to­rios mediante un objeto de estado.
getrandbits(k) Devuelve un número entero con k bits.
randrange(start, stop, step) Crea un número entero aleatorio dentro del rango es­pe­ci­fi­ca­do.
randint(a, b) Devuelve un número entero aleatorio en el rango es­pe­ci­fi­ca­do.
choice(seq) Devuelve un elemento aleatorio de la secuencia definida.
choices(population, weights=None, *, cum_weights=None, k=1) Crea una lista con k elementos se­le­c­cio­na­dos alea­to­ria­me­n­te de la población; las pro­ba­bi­li­da­des pueden es­pe­ci­fi­car­se de forma opcional.
sample(k, population) Crea una lista con k elementos se­le­c­cio­na­dos alea­to­ria­me­n­te de la población; sin du­pli­ca­dos.
shuffle(x) Mezcla los elementos en una lista en un orden aleatorio.
random() Devuelve un número de punto flotante aleatorio en el rango de 0 a 1.
uniform(a, b) Devuelve un número de punto flotante aleatorio en el rango es­pe­ci­fi­ca­do, incluidos los valores límite.
triangular(low, high, mode) Crea un número de punto flotante aleatorio en el rango de di­s­tri­bu­ción tria­n­gu­lar.
betavariate(alpha, beta) Devuelve un número de punto flotante aleatorio de una di­s­tri­bu­ción beta.
expovariate(lambd) Devuelve un número de punto flotante aleatorio de una di­s­tri­bu­ción ex­po­ne­n­cial.
gammavariate(alpha, beta) Crea un número de punto flotante aleatorio de una di­s­tri­bu­ción gamma.
gauss(mu, sigma) Devuelve un número de punto flotante aleatorio de una di­s­tri­bu­ción gaussiana.
lognormvariate(mu, sigma) Crea un número de punto flotante aleatorio de una di­s­tri­bu­ción lo­ga­rí­t­mi­ca normal.
normalvariate(mu, sigma) Devuelve un número de punto flotante aleatorio de una di­s­tri­bu­ción normal.
vonmisesvariate(mu, kappa) Devuelve un número de punto flotante aleatorio de una di­s­tri­bu­ción de Von Mises.
paretovariate(alpha) Devuelve un número de punto flotante aleatorio de una di­s­tri­bu­ción de Pareto.
weibullvariate(alpha, beta) Devuelve un número de punto flotante aleatorio de una di­s­tri­bu­ción de Weibull.

Se­le­c­cio­nar elementos alea­to­rios de una lista

Para se­le­c­cio­nar varios elementos alea­to­rios de una lista, puedes utilizar la función choices(seq, k=n) del módulo random de Python, en la que n es el número de elementos alea­to­rios deseados.

import random
# A list of elements
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Randomly selecting an element from the list
random_elements = random.choices(my_list, k=3)
print("Randomly selected elements:", random_element)
python

En este ejemplo, se utiliza la función choices() para se­le­c­cio­nar tres elementos alea­to­rios de la lista my_list. Los re­su­l­ta­dos se devuelven como una lista de tres elementos alea­to­rios.

Hosting
Hosting de primera al mejor precio
  • 3x más rápido, ahora un 60 % de ahorro
  • Alta di­s­po­ni­bi­li­dad >99.99 %
  • Solo en IONOS: hasta 500 GB incluidos

Mezclar una lista

La función shuffle() ordena los elementos de las Python lists en un orden aleatorio.

import random
# A list of elements
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Shuffle the elements in the list
random.shuffle(my_list)
print("Shuffled list:", my_list) # Example Output: Shuffled list: ['Strawberry', 'Banana', 'Apple', 'Cherry', 'Orange']
python

Ten en cuenta que shuffle() cambia la lista y no devuelve una nueva. Después de usar esta función, la lista original quedará en un orden aleatorio.

Es­ta­ble­cer una semilla

Si utilizas random.seed() del módulo random de Python para es­ta­ble­cer un valor semilla es­pe­cí­fi­co, el generador de números alea­to­rios empezará a generar números alea­to­rios basándose en esa semilla. Es decir, si es­ta­ble­ces el mismo valor de semilla po­s­te­rio­r­me­n­te, se generará el mismo conjunto de números alea­to­rios en la apli­ca­ción.

import random
# Setting the seed value to 42
random.seed(42)
# Generating random numbers
print(random.random())  # Example output: 0.6394267984578837
print(random.random())  # Example output: 0.025010755222666936
# Resetting the seed value to 42
random.seed(42)
# Generating random numbers again
print(random.random())  # Example output: 0.6394267984578837 (identical to the previous value)
print(random.random())  # Example output: 0.025010755222666936 (identical to the previous value)
python

Después de es­ta­ble­cer el valor inicial o semilla, se generan y emiten números alea­to­rios. Si el valor de la semilla se re­s­ta­ble­ce en el mismo valor, se vuelven a generar los mismos números alea­to­rios. En el código anterior, la semilla tiene el valor 42, por lo que los números alea­to­rios se pueden re­pro­du­cir siempre que el valor de semilla siga siendo el mismo.

Ir al menú principal