Generar números aleatorios en Python

Generar números aleatorios en Python

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
5

random()

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.22472067642268556

uniform(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.21872629322894

Obtener 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átanos

shuffle()

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]

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento