Para generar números aleatorios en Python se hace uso del módulo random de la biblioteca estándar. Este módulo ofrece una serie de funciones que generan números aleatorios de manera diferente. En este artículo repasaremos cuáles son las principales funciones y sus usos.
Generar números aleatorios entre dos valores en Python
randint(a, b)
Para generar números aleatorios en Python de valor entero, se suele utilizar la función randint(). La función randint(a, b) devuelve un número entero comprendido entre a y b (ambos inclusive) de forma aleatoria. Ejemplos útiles de esta función: determinar quién comienza una partida (jugador/PC); simular el dado del parchís, etc:
import random
# ¿Quién comienza?
comienza = random.randint(0, 1)
if comienza == 0:
print('Comienza el jugador')
else:
print('Comienza el PC')
# Número aleatorio del parchís
numero = random.randint(1, 6)randrange(a, b, salto)
La función randrange(a, b, salto) genera números enteros aleatorios comprendidos entre a y b separados entre sí con un salto. Por ejemplo, randrange(5, 27, 4) obtendría un valor aleatorio de entre los siguientes posibles: 5, 9, 13, 17, 21, 25.
>>> import random
>>> for i in range(10):
... print(random.randrange(5, 27, 4))
...
17
13
5
17
13
25
9
5random()
La función random() devuelve un float comprendido entre [0.0 y 1.0)
>>> import random
>>> for i in range(5):
... print(random.random())
...
0.6355590910913725
0.38870490605141683
0.3757381647176976
0.38770694501889935
0.22472067642268556uniform(a, b)
La función uniform(a, b) devuelve un float aleatorio comprendido entre a y b (ambos inclusive).
>>> import random
>>> for i in range(5):
... print(random.uniform(100, 200))
...
170.3543065193162
103.47025653056637
126.52588283656675
169.60671144065486
145.21872629322894Obtener elementos aleatorios de una secuencia
Hasta ahora hemos visto cómo obtener números aleatorios en Python. A continuación veremos que también es posible obtener elementos aleatorios de una secuencia.
choice()
La función choice(sec) devuelve un elemento aleatorio de una secuencia. Es muy útil cuando hay que elegir al azar un elemento de entre un conjunto.
>>> import random
>>> frutas = ['peras', 'manzanas', 'plátanos', 'ciruelas']
>>> for i in range(3):
... print(random.choice(frutas))
...
peras
ciruelas
plátanosshuffle()
La función shuffle(sec) modifica el orden de los elementos de una lista. Esta función se asemeja a la acción de mezclar una baraja.
>>> import random
>>> baraja = [1, 2, 3, 4, 5, 6, 7, 10, 11, 12]
>>> for i in range(3):
... random.shuffle(baraja)
... print(baraja)
...
[11, 3, 2, 6, 12, 10, 5, 4, 1, 7]
[7, 3, 1, 10, 6, 12, 2, 11, 5, 4]
[1, 11, 3, 2, 4, 12, 5, 10, 7, 6]sample()
La última función que veremos es sample(sec, num). Esta función devuelve num elementos aleatorios de la secuencia sec. Siguiendo con el ejemplo de la baraja, sería similar a la acción de repartir num cartas a un jugador.
>>> import random
>>> baraja = [1, 2, 3, 4, 5, 6, 7, 10, 11, 12]
>>> random.sample(baraja, 5)
[2, 1, 4, 11, 12]