Entrada

Módulo Random

Este módulo random implementa generadores de números para varias distribuciones.

Enteros

Para los enteros, existe una selección uniforme dentro de un rando. Para las secuencias, existe una selección uniforme de un elemento aleatorio, una función para generar una permutación aleatoria de una lista y una función para hacer un muestreo aleatorio sin remplazo.

Reales

Para números reales, es decir los que se expresan con decimales, existen funciones para calcular distribuciones uniformes, normales, exponenciales negativas, beta, etc.

Casi todas las funciones del módulo dependen de la función básica random(), que genera un número punto flotante aleatorio uniformemente.

El módulo random también proporciona la clase SystemRandom, la cúal usa la función del sistema a través de os.urandom()

Funciones para enteros

random.randrange(stop)
random.randrange(start, stop[, step])

Devuelve un elemento seleccionado aleatoriamente en un rango, en este caso es sobre la función range(start, stop, step)

Ejemplo:

  • 1
    
    print(random.randrange(0, 11, 2)) # 4
    
  • Esta función nos devolverá un número aleatorio dentro de un rango de 0 a 10 intercalados de 2 en 2.

random.randint(a, b)

Nos devuelve un número entero aleatorio es un alias de la función anterior es equivalente a randrange(a, b+1).

Ejemplo

  • 1
    
    print(random.randint(0, 10)) # 3
    
  • Esta función nos devolverá un número entero aleatorio dentro de un rango de 0 a 10.

Funciones para secuencias o iterables

random.choice(list)

Este método nos devolverá un elemento aleatorio de una secuencia o conjunto que no sea vacío. Si está la secuencia vacía nos lanzará un IndexError

Ejemplo

  • 1
    2
    3
    
    cosas = ["Piedra", "Papel", "Tijeras", "Madera", "Lata"]
    
    print(random.choice(cosas)) # Papel
    
  • Este método nos devolverá un elemento dentro del conjunto de forma aleatoria.

random.choices(list, weights=None, *, cum_weights=1, k=1)

Este método a diferencia del anterior, lleva el nombre en plural y acepta más parámetros, y puede devolver una lista de elementos según el tamaño en el parámetro k indicado. Si está la secuencia vacía nos lanzará un IndexError

  • 1
    2
    3
    
    cosas = ["Piedra", "Papel", "Tijeras", "Madera", "Lata"]
    
    print(random.choices(cosas, k=2)) # ['Papel', 'Lata']
    
  • Tenemos una lista de cosas y usando el método choices(lista, k=num) hacemos que nos retorne dos elementos aleatorio en una lista.

random.shuffle(list)

Este método mezcla una secuencia o conjunto y retorna una nueva lista mezclada modificando la original. Si deseamos mezclar una secuencia inmutable podemos usar random.shuffle(list, k=len(list)).

1
2
3
4
5
6
7
8
9
cosas = ["Piedra", "Papel", "Tijeras", "Madera", "Lata"]

random.shuffle(cosas)
print(cosas) # ['Lata', 'Papel', 'Tijeras', 'Piedra', 'Madera']

objetos = ("Piedra", "Madera", "Lata")

objetos_mezclados = random.sample(objetos, k=len(objetos))
print(objetos_mezclados) # ['Lata', 'Piedra', 'Madera']

Mi lema es

Esta entrada está licenciada bajo CC BY 4.0 por el autor.