Python para pensadores

Taller diseñado con el corazón de un docente y la mente de un programador
Python: Manejo de la librería random (randint, randchoice, randshuffle)

Objetivo de aprendizaje

Dominar el uso de la librería random en Python para generar valores aleatorios, simular escenarios del mundo real y resolver problemas complejos mediante el desarrollo de algoritmos que integren las funciones randint(), choice() y shuffle(), fortaleciendo así el pensamiento computacional, la creatividad en la resolución de problemas y la capacidad de análisis crítico frente a situaciones de incertidumbre, todo mientras se cultiva una actitud ética y colaborativa hacia el uso de la aleatoriedad en aplicaciones tecnológicas.

Contextualización: El azar en nuestras vidas

Imagina que estás organizando un torneo de videojuegos entre tus amigos, o quizás preparando un examen sorpresa para estudiar, o tal vez creando una playlist que mezcle tus canciones favoritas de forma impredecible. En todas estas situaciones, hay un elemento en común: el azar. Pero, ¿es realmente "azar" o podemos domar la imprevisibilidad con código?

La programación nos permite crear orden a partir del caos, y Python, con su librería random, nos da las herramientas para simular la aleatoriedad de la vida real en nuestros programas. Hoy no solo aprenderás funciones, sino que descubrirás cómo la incertidumbre puede convertirse en una aliada para crear soluciones innovadoras.

Desarrollo de la actividad

1. Importando la librería random

Para comenzar a trabajar con aleatoriedad en Python, primero debemos importar la librería:

import random

2. Generando números enteros aleatorios: randint()

La función randint(a, b) genera un número entero aleatorio entre a y b, incluyendo ambos extremos.

Ejemplo práctico: Simulador de lanzamiento de dados

Vamos a crear un programa que simule el lanzamiento de un dado de 6 caras:

import random

# Simular un lanzamiento de dado
resultado = random.randint(1, 6)
print("El dado cayó en:", resultado)

# Simular 10 lanzamientos y contar cuántas veces sale cada número
conteo = {1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0}

for i in range(10):
    lanzamiento = random.randint(1, 6)
    conteo[lanzamiento] += 1

print("Resultados de 10 lanzamientos:")
for cara, cantidad in conteo.items():
    print(f"Cara {cara}: {cantidad} veces")

3. Seleccionando elementos aleatorios: choice()

La función choice(secuencia) selecciona un elemento aleatorio de una lista, tupla o cadena.

Ejemplo práctico: Selector de temas para presentaciones

Imagina que debes preparar una presentación pero no sabes por dónde empezar. Este programa selecciona un tema aleatorio para ti:

import random

# Lista de temas posibles
temas = ["Inteligencia Artificial",
        "Cambio climático",
        "Realidad virtual",
        "Blockchain y criptomonedas",
        "Exploración espacial",
        "Salud digital"]

# Seleccionar un tema aleatorio
tema_seleccionado = random.choice(temas)
print("Tu tema de presentación es:", tema_seleccionado)

# Seleccionar 3 temas diferentes sin repetición
temas_unicos = random.sample(temas, 3)
print("Tres temas interesantes:", temas_unicos)

4. Mezclando secuencias: shuffle()

La función shuffle(secuencia) mezcla los elementos de una lista en su lugar (modifica la lista original).

Ejemplo práctico: Organizador de equipos para proyectos

Cuando trabajas en equipo, a veces es justo asignar los roles de forma aleatoria. Este programa mezcla una lista de estudiantes y los asigna a grupos:

import random

# Lista de estudiantes
estudiantes = ["Ana", "Carlos", "María", "José",
            "Lucía", "Diego", "Sofía", "Miguel"]

print("Estudiantes en orden original:", estudiantes)

# Mezclar la lista
random.shuffle(estudiantes)
print("Estudiantes mezclados:", estudiantes)

# Formar 2 equipos de 4 personas
equipo1 = estudiantes[:4]
equipo2 = estudiantes[4:]
print("\nEquipo 1:", equipo1)
print("Equipo 2:", equipo2)

El reto final: Simulador de lotería ecuatoriana

Tu misión es crear un programa que simule el juego de lotería tradicional ecuatoriana. Debes implementar las siguientes funcionalidades:

  1. Generar 6 números aleatorios entre 1 y 45 (sin repetición) que representen los números ganadores.
  2. Permitir al usuario ingresar 6 números de su elección (validando que estén entre 1 y 45 y no se repitan).
  3. Comparar los números del usuario con los números ganadores y determinar cuántos aciertos tuvo.
  4. Asignar un premio según la cantidad de aciertos: 6 aciertos (premio mayor), 5 aciertos (segundo premio), 4 aciertos (tercer premio).
  5. Mostrar los resultados de forma clara y atractiva.

Este reto integra todo lo aprendido: usarás randint() para generar números, sample() para evitar repeticiones, trabajarás con listas y condicionales, y crearás una interfaz de usuario básica. ¡Ponte a prueba y muestra tu creatividad!

Evaluación lúdica: Pon a prueba tu conocimiento

Responde las siguientes preguntas para demostrar lo que has aprendido sobre la librería random en Python.

Puntuación: 0/5