Números Aleatorios o Módulo Random
- Publicado por: Rafael Fernandez
- Categoría: Blog Principiante Python
En el post de hoy, me gustaría describir y explicar, el uso del módulo aleatorio en el lenguaje de programación Python. Este módulo aleatorio nos proporciona acceso a funciones que soportan muchas operaciones, además de que una de las características mas importantes de este módulo es que te permite generar números aleatorios.
Números Aleatorios en Python
En Python, al igual que en casi cualquier otro lenguaje de progrmación lo más probable es que tengas que generar un número o valor aleatorio en algún momento de tu programación con este fantástico lenguaje, y gracias a este post sabrás cómo usar esta poderosa herramienta.
¿Qué es la generación de números aleatorios?
La generación de números aleatorios, te da la posibilidad de generar, crear, o imprimir, una secuencia de símbolos o números sin una predicción totalmente lógica o con una secuencia razonable, ya que es simplemente una casualidad meramente aleatoria, casi siempre se realiza mediante un generador de números aleatorios de hardware. Muchas aplicaciones de la aletoriedad como tal, han desembarcado en el desarrollo y exploración de diversos y distintos métodos para generar datos aleatorios, incluso, algunos de estos métodos han existido desde la antigüedad, entre los cuales sus rangos se encuentran algunos ejemplos que podemos considerar “clásicos”, como por ejemplo: el lanzamiento de dados, el barajar cartas, lanzar monedas al azar, el uso de tallos de milenrama (para el arte de la adivinación) en el I Ching, así como un montón de técnicas mas que han existido desde hace mucho tiempo. Gracias a la naturaleza mecánica de las técnicas antes mencionadas, el generar una cantidad importante de números aleatorios (importantes en las estadísticas, por ejemplo) requeriría de una gran cantidad de tiempo y trabajo. Por esta razón, algunas veces los resultados se guardaban y se distribuían en tablas numéricas aleatorias.
Ejemplo del uso de este módulo
En este pequeño fragmento de código, mostrado a continuación verás el funcionamiento de este módulo al generar 10 números escogidos aleatoriamente entre el 0 y el 100.
import random for x in range(10): print (random.randint(1,101))
El código que acabas de observar va a imprimir 10 números elegidos totalmente al azar de entre todos los números de entre el 1 y el 100. En la segunda línea puedes ver la estructura for x con un rango de 10 expresado así: for x in range(10): esta línea es la encargada de decidir cuántos valores serán impresos en la consola. Finalmente la tercera línea (random.randint(1,101)) es la encargada de seleccionar un número entero al azar de entre 0 y 100 para tu programa. Como habrás notado es un proceso realmente fácil y muy simple.
¿Cuándo utilizar el Módulo Aleatorio en Python?
Podemos requerir de este modulo cuando queramos que la computadora escoja un número totalmente al azar de entre un rango dado. Sin lugar a dudas vamos a encontrar muchos programas o algoritmos, en los cuales vamos a necesitar elegir un elemento aleatorio de alguna lista, como escoger una carta aleatoria de un mazo, tirar una moneda, o un dado, entre otras circunstancias mas.
¿Alguna vez haz querido modelizar los juegos de un casino (ruleta, black jack, poker ...) para intentar ganar?
- Con el módulo de generación de números aleatorios puedes modelar estos juegos de casino.
Otra ocasión en la que quizás quieras usar este módulos, puede ser para que tu base de datos de contraseñas sea mucho mas segura, o al activar una función para mostrar una página aleatoria en tu sitio web.
Funciones aleatorias y Ejemplos de números aleatorio en Python
El módulo Random contiene algunas funciones que resultan ser muy útiles:
- Randint
Si deseas usar un número entero elegido de forma aleatoria dentro de un rango de números (del 1 al 10, por ejemplo), puedes usar la función llamada randint. Esta práctica función acepta dos parámetros en su estructura: un número más bajo, y un número más alto.
import random print (random.randint(x,y))
Para usar esta función con el rango que tu desees tienes que colocar el número mas bajo en la posición x de la función, y el más alto en la posición y de la misma, por ejemplo:
import random print (random.randint(10,30))
El resultado en consola de este ejemplo, será un número aleatorio comprendido entre el 10 y el 30.
- Random
Si quieres un número mayor, puedes multiplicarlo. Por ejemplo, un número aleatorio entre 0 y 1000:
import random print (random.random()*1000)
- Choice
Si utilizas la función choice generarás un valor aleatorio partiendo de una secuencia. Esta función de selección es la mas usada si necesitamos elegir un elemento al azar de cualquier lista en Python. Aquí tienes un ejemplo:
import random color=random.choice( ['rojo', 'amarillo', 'verde']) print(color)
La salida que obtendrás en consola de este código, será la elección al azar de uno de estos colores.
- Shuffle
Con la función Shuffle, o barajar, vas a “barajar” o cambiar de posición aleatoriamente los elementos de una lista cualquiera.
import random s=list(range(15)) random.shuffle(s) print(s)
En la salida por consola verás los números del 0 al 15 en posiciones aleatorias, por ejemplo, quizá verás al número 1 en la posición del número 13, entre otros. Pero te aseguro que difícilmente se te mostraran en su posición lógica o convencional.
- Randrange
Con Randrange vas a generar un elemento seleccionado aleatoriamente desde su comienzo partiendo de un rango (inicio, parada, paso).
random.randrange(comienzo, parada, paso)
import random print(random.randrange(0,50,2))
La salida por consola será un número aleatorio desde 0 a 50 y con un paso de 2.
Igualmente aquí te dejo abajo otro ejemplo de la función Randrage
import random #Rango simple de 0 a 6 print (random.randrange(6)), (random.randrange(6)) #Rango más complejo de 1 a 7 print (random.randrange(1,7)), (random.randrange(1,7)) #Rango realmente complejo de números pares entre 2 y 36 print (random.randrange(2,37,2)) #Números impares del 1 al 35 print(random.randrange(1,36,2))
- Sample
La función sample () se usa para obtener una muestra de la secuencia (cadena, lista, tupla).
Sintaxis
random.sample (secuencia, longitud) La
secuencia puede ser una cadena, lista o
longitud de tupla. Especifique la longitud de la muestra que se obtendrá.
Ejemplo:
import random str1 = "L4wisdom.com" list1= ['a','b','c','d','e','f','o','l'] print (random.sample(str1,4)) print (random.sample(str1, len(str1))) print (random.sample(str1,4)) print (random.sample(str1, len(str1)))
La función sample () devuelve la lista de muestras, independientemente de la entrada que se dé. La función sample () se puede usar como mezcla, si la longitud es igual a len (secuencia).
- seed()
Cuando interese obtener varias veces la misma secuencia de números pseudoaleatoria se puede utilizar la función seed() que fija mediante una “semilla” el mismo comienzo en cada secuencia, permitiendo con ello obtener series con los mismos valores.
A continuación, se muestra un ejemplo donde se realizan tres series de seis sorteos; y en cada serie se obtienen los mismos regalos y en el mismo orden.
La semilla en este caso se fija con un valor numérico (0 en este caso) pero también se puede utilizar una cadena o una unidad de tiempo obtenida con la función time() del módulo time; o incluso puede expresarse con cualquier objeto “hashable” de Python.
import random regalos = ['Hojas', 'Almohadas', 'iPhone', 'Cocina', 'Puerta', 'Tablet', 'Llavero', 'Zapatos', 'Automovil', 'Bolso'] for serie in range(3): print('\nserie:', serie + 1) random.seed(0) for sorteo in range(6): regalo = regalos[random.randint(0, 9)] print('Sorteo', sorteo + 1, ':', regalo)
Felicidades por llegar hasta aquí, estás ampliando tus conocimientos en programación cada vez más!! La generación de números aleatorios tiene muchas aplicaciones en juegos y en la creación de identificadores únicos.
➡ No aprendas de lugares aleatorios. Aprende con nuestro:
[…] los dos primeros módulos para poder crear las marcas de tiempo a usar, y luego usamos el módulo aleatorio para crear algunos valores a […]
[…] con algoritmos de aprendizaje automático que utilicen un proceso estocástico (por ejemplo, números aleatorios), es una buena idea establecer la semilla del número […]
[…] Curso Python desde 0, 8º clase […]
[…] que trabajemos con algoritmos de machine learning que utilicen un proceso estocástico (por ejemplo, números aleatorios), es una buena idea establecer la semilla del número […]
En el ejemplo de Sample se esta enviando 2 veces la secuencia de str1 y no list1 en la segunda secuencia, y en seed no comprendia bien como debia ser el sangrado.
Disculpa las molestias y muchas gracias por toda esta informacion.