random — generación de números aleatorios

Este módulo implementa un generador de números pseudoaleatorios (PRNG). El PRNG es un LCG de 32 bits de estilo Yasmarang; en la primera importación obtiene una semilla de 32 bits de la misma fuente de hardware que utiliza os.urandom(), y cada número posterior es una función determinista de esa semilla.

Advertencia

La salida no es criptográficamente segura: el algoritmo es predecible a partir de una secuencia de salida corta, y la semilla inicial solo aporta 32 bits de entropía. Para material de claves, tokens de sesión, sales de contraseñas o cualquier otro uso sensible a la seguridad, llame a os.urandom() en su lugar.

Nota

Se utiliza la siguiente notación para los intervalos:

  • () son corchetes de intervalo abierto y no incluyen sus extremos. Por ejemplo, (0, 1) significa mayor que 0 y menor que 1. En notación de conjuntos: (0, 1) = {x | 0 < x < 1}.

  • [] son corchetes de intervalo cerrado que incluyen todos sus puntos límite. Por ejemplo, [0, 1] significa mayor o igual que 0 y menor o igual que 1. En notación de conjuntos: [0, 1] = {x | 0 <= x <= 1}.

Funciones para enteros

random.getrandbits(n: int) int

Devuelve un entero con n bits aleatorios (0 <= n <= 32).

random.randint(a: int, b: int) int

Devuelve un entero aleatorio en el rango [a, b].

random.randrange(start: int, stop: int | None = None, step: int = 1) int

La primera forma devuelve un entero aleatorio del rango [0, stop). La segunda forma devuelve un entero aleatorio del rango [start, stop). La tercera forma devuelve un entero aleatorio del rango [start, stop) en pasos de step. Por ejemplo, llamar a randrange(1, 10, 2) devolverá números impares entre 1 y 9 inclusive.

Funciones para números de coma flotante

random.random() float

Devuelve un número de coma flotante aleatorio en el rango [0.0, 1.0).

random.uniform(a: float, b: float) float

Devuelve un número de coma flotante aleatorio N tal que a <= N <= b para a <= b, y b <= N <= a para b < a.

Otras funciones

random.seed(n: int | None = None, /) None

Inicializa el módulo generador de números aleatorios con la semilla n, que debe ser un entero. Cuando no se pasa ningún argumento (o None), el PRNG se vuelve a sembrar desde la misma fuente específica del puerto que utiliza os.urandom().

random.choice(sequence: Any) Any

Elige y devuelve un elemento al azar de sequence (tupla, lista o cualquier objeto que admita la operación de subíndice).