Números aleatorios en Python

De ChuWiki

Veamos cómo generar números aleatorios en Python.

Módulo random[editar]

Phython tiene el módulo random que nos da las funciones básicas para generar números aleatorios. Debemos, por tanto, importarlo

import random

Una vez importado, veamos algunas de las funciones de este módulo.

función random()[editar]

La función random devuelve un número aleatorio entre 0 (incluido) y 1 (excluido), con decimales.

>>> random.random()
0.5049373105587746

función randint()[editar]

La función randint() devuelve un número aleatorio entero entre los valores a y b que se pasen como parámetro, ambos incluido. Es útil para generar por ejemplo un número aleatorio entre 1 y 10. O un número aleatorio entre 1 y 6 que simule la tirada de un dado.

>>> random.randint(1,6)
4

función ranrange()[editar]

La función randrange() nos permite afinar más. Admite tres parámetros: valor inicial, valor final e incremento. El siguiente ejemplo devuelve números del 10 al 20, pero sólo números pares

>>> random.randrange(10,20,2)
16

Podemos omitir parámetros. Si sólo ponemos uno se interpreta como valor final. El valor inicial será 1 y el incremento 1. Si ponemos dos valores, se interpretarán como valor inicial y final, el incremento será 1.

>>> random.randrange(10)
3

>>> random.randrange(3,10)
8

función seed()[editar]

Podemos inicializar la secuencia de números aleatorios con la función seed() que admite un parámetro entero. Si la llamamos con un número, a partir de ese momento comenzará una secuencia de números aleatorios concreta. Si volvemos a inicializarla con el mismo número, se repetirá la misma secuencia.

>>> random.seed(3)
>>> random.random()
0.23796462709189137
>>> random.random()
0.5442292252959519

>>> random.seed(3)
>>> random.random()
0.23796462709189137
>>> random.random()
0.5442292252959519

función uniform()[editar]

La función uniform() devuelve un número aleatorio con decimales entre dos valores que se pasan como parámetro, ambos incluidos.

>>> random.uniform(2.5, 3.3)
2.7959641332384635

La función uniform() devuelve los números aleatorios siguiendo una distribución uniforme. Es decir, todos los números del rango tienen la misma probabilidad de salir. Sin embargo, existen otro tipo de distribuciones a las que python también da soporte:

  • triangular(minimo, maximo, moda).
  • betavariate(alpha, beta). Distribución beta.
  • expovariate(lambd). Distribución exponencial.
  • gammavariate(alpha, beta). Distribución gamma.
  • gauss(mu=0.0, sigma=1.0). Distribución de Gauss.
  • lognormvariate(mu, sigma). Distribución log normal.
  • normalvariate(mu=0.0, sigma=1.0). Distribución normal.
  • paretovariate(alpha). Distribución de pareto.
  • weibullvariate(alpha, beta). Distribución weibull.

En ellas la probabilidad de salir de cada número depende de una función matemática propia del tipo de distribución.

función choice()[editar]

La función choice() elige aleatoriamente un elemento de una lista

>>> color = ['rojo', 'verde', 'azul', 'amarillo']
>>> random.choice(color)
'amarillo'

función shuffle()[editar]

La función shuffle() desordena aleatoriamente los elementos de una lista. Sería el equivalente a barajar un juego de cartas

>>> numeros = [1,2,3,4,5]
>>> random.shuffle(numeros)
>>> print (numeros)
[2, 4, 3, 1, 5]

función sample()[editar]

La función sample() elige aleatoriamente tantos elementos como le digamos de una lista. Sería el equivalente a repartir cartas de una baraja

>>> numeros = [1,2,3,4,5,6,7,8,9,10]
>>> random.sample(numeros,3)
[8, 5, 4]