Se pueden generar números aleatorios utilizando las funciones random(), uniform(), randange() y randint() del módulo random de la biblioteca estándar de Python.
El módulo aleatorio está incluido en la biblioteca estándar, por lo que no se requiere ninguna instalación adicional. Por supuesto, es necesario importarlo.
La siguiente información se proporciona aquí.
random.random()
(Número en coma flotante entre 0,0 y 1,0)random.uniform()
(Cualquier rango de números de coma flotante)- Generar números aleatorios que sigan una distribución normal, una distribución gaussiana, etc.
random.randrange()
(Número entero de rango y paso arbitrarios)random.randint()
(Un número entero en cualquier rango)- Generar una lista con números aleatorios como elementos
- Lista de números aleatorios en coma flotante
- Lista de números aleatorios enteros
- Inicializar el generador de números aleatorios (fijar la semilla de números aleatorios)
Consulte el siguiente artículo sobre cómo extraer u ordenar aleatoriamente los elementos de una lista.
- Artículos relacionados:Selección de elementos aleatorios de una lista en Python usando choice(), sample(), choices()
- random.random() (Número en coma flotante entre 0,0 y 1,0)
- random.uniform() (Cualquier rango de números de coma flotante)
- Generar números aleatorios que sigan una distribución normal, una distribución gaussiana, etc.
- random.randrange() (Número entero de rango y paso arbitrarios)
- random.randint() (Un número entero en cualquier rango)
- Generar una lista con números aleatorios como elementos
- Inicializar el generador de números aleatorios (fijar la semilla de números aleatorios)
random.random() (Número en coma flotante entre 0,0 y 1,0)
La función random() del módulo random genera un número aleatorio de punto flotante de tipo float que está entre 0.0 y 1.0.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (Cualquier rango de números de coma flotante)
uniform(a, b)
Las funciones de este módulo aleatorio generan números aleatorios de tipo flotante en cualquiera de los siguientes rangos
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Los dos argumentos pueden ser mayores o menores; si son iguales, naturalmente sólo devolverán ese valor. El valor de retorno es siempre un float.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
El argumento también se puede especificar como un flotador.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
La inclusión del valor de b en el rango depende del siguiente redondeo, como se ha documentado.a + (b-a) * random.random()
El hecho de que el valor del punto final b esté o no en el rango depende del redondeo en coma flotante en la siguiente ecuación
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Generar números aleatorios que sigan una distribución normal, una distribución gaussiana, etc.
Las funciones random() y uniform() anteriores generan números aleatorios distribuidos uniformemente, pero también hay funciones para generar números en coma flotante que siguen la siguiente distribución.
- distribución beta:
random.betavariate()
- distribución exponencial:
random.expovariate()
- distribución gamma:
random.gammavariate()
- Distribución gaussiana:
random.gauss()
- distribución lognormal:
random.lognormvariate()
- distribución normal:
random.normalvariate()
- Distribución de Von Mises:
random.vonmisesvariate()
- Distribución de Pareto:
random.paretovariate()
- Distribución de Weibull:
random.weibullvariate()
Los parámetros de cada distribución se especifican mediante argumentos. Consulte la documentación oficial para más detalles.
random.randrange() (Número entero de rango y paso arbitrarios)
randrange(start, stop, step)
La función de este módulo aleatorio devuelve un elemento seleccionado al azar entre los siguientes elementos.range(start, stop, step)
Al igual que con range(), los argumentos inicio y paso pueden omitirse. Si se omiten, start=0 y step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
El argumento paso puede establecerse para generar un entero aleatorio par o impar, o un entero aleatorio que sea múltiplo de tres.
Por ejemplo, si el inicio es par y el paso=2, sólo se pueden obtener aleatoriamente enteros pares en el rango.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Un número entero en cualquier rango)
randint(a, b)
La función de este módulo aleatorio devuelve el siguiente número entero aleatorio.a <= n <= b
randrange(a, b + 1)
Equivale a esto; tenga en cuenta que el valor de b también se incluye en el rango.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Generar una lista con números aleatorios como elementos
En esta sección, explicaremos cómo utilizar el módulo random de la biblioteca estándar para generar una lista con números aleatorios como elementos.
Lista de números aleatorios con coma flotante
Para generar una lista cuyos elementos son números aleatorios de punto flotante, combine las funciones random() y uniform() con la notación de comprensión de listas.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
En el ejemplo anterior, se utiliza range(), pero también es posible utilizar listas y tuplas para el número de elementos deseado. Para más detalles sobre las comprensiones de listas, consulte el siguiente artículo.
- Artículos relacionados:Uso de la notación de comprensión de listas de Python
Lista de números aleatorios int enteros
Cuando se genera una lista cuyos elementos son números aleatorios enteros, la combinación de las funciones anteriores randange() y randint() con la notación de comprensión de la lista puede dar lugar a valores duplicados.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Si quieres hacer una secuencia aleatoria de enteros sin duplicar, extrae los elementos de range() con un rango arbitrario usando random.sample().
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
Para más información sobre random.sample(), consulte el siguiente artículo.
- Artículos relacionados:Selección de elementos aleatorios de una lista en Python usando choice(), sample(), choices()
Inicializar el generador de números aleatorios (fijar la semilla de números aleatorios)
Dando un número entero arbitrario a la función seed() del módulo random, la semilla de números aleatorios puede ser fijada y el generador de números aleatorios puede ser inicializado.
Tras la inicialización con la misma semilla, el valor aleatorio se genera siempre de la misma manera.
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025