Chismes del Lince 190: La moneda de la herencia (herencia genética Python)
En Sierra Bermeja los linces jóvenes llevan toda la tarde discutiendo. La Gata Montesa ha planteado una pregunta trampa:
—Si un progenitor lleva un gen dominante y el otro no, ¿cuántos de sus cachorros lo heredarán?
—¡La mitad! —responde el Lince de la Noche, muy seguro—. Tengo dos cachorros: uno sí y otro no.
—¿Y si tuvieras cuatro y salieran tres con el gen? ¿Habría fallado la ley?
El Lince se rasca la oreja.
—Pues… no lo sé. Necesito muchas camadas para comprobarlo.
—Lo bueno es que no hace falta esperar años —sonríe la Gata—. Podemos simular las camadas con Python.
Introducción
Hoy hacemos un experimento de herencia genética Python, con un programa de pocas líneas y una sola biblioteca: random.
Simulamos que cada hijo hereda un gen con probabilidad ½ y comprobamos qué pasa cuando miramos 4, 100 o 100 000 hijos.
Por qué este chisme
La herencia genética Python que simulamos parte de una idea sencilla: un gen dominante tiene un 50 % de probabilidad de pasar a cada hijo. Pero «un 50 %» no significa «exactamente la mitad» en cada familia.
Si vemos pocos casos, el resultado se aleja mucho de la teoría. Con muchos, se acerca. Es la idea que sostiene a la estadística y a la ciencia con datos.
Cómo funciona
Las leyes de Mendel explican cómo pasan los genes de padres a hijos. Para un gen dominante con un progenitor que lo lleva en una sola copia, cada hijo hereda esa copia con probabilidad ½.
En Python lo representamos con random.random(), que da un número entre 0 y 1. Si sale menor que 0,5, el hijo hereda el gen.
Lo mismo hacía el dado de la Pi Pico del chisme 46: sacar números al azar.
Qué necesitamos
- Un ordenador con Python 3, por ejemplo con Thonny, o cualquier editor de Python online.
- El simulador del chisme 190 para ver el resultado en barras.
- La biblioteca random, que ya viene con Python.
El código
Crea un archivo herencia190.py, pega esto y ejecútalo. Es el programa completo.
# Chisme 190 · La moneda de la herencia (Python muy simple)
# Un progenitor tiene una copia de un gen dominante "X".
# Cada hijo lo hereda con probabilidad 1/2 (0,5).
import random # random sirve para sacar números al azar
def experimento(hijos):
"""Simula 'hijos' hijos y devuelve cuántos heredan el gen X."""
con_gen = 0
for _ in range(hijos): # repetimos una vez por cada hijo
if random.random() < 0.5: # random() da un número entre 0 y 1
con_gen += 1
return con_gen
# Probamos con cada vez más hijos
for hijos in [4, 10, 100, 1000, 100000]:
c = experimento(hijos)
porcentaje = 100 * c / hijos
print(hijos, "hijos ->", c, "con el gen X =", round(porcentaje, 1), "%")
Cómo probarlo
Ejecuta el programa varias veces. Con 4 o 10 hijos el porcentaje salta mucho (0 %, 25 %, 70 %…). Con 100 000 hijos casi siempre sale entre 49,5 % y 50,5 %.
Un ejemplo de salida:
4 hijos -> 0 con el gen X = 0.0 %
10 hijos -> 7 con el gen X = 70.0 %
100 hijos -> 48 con el gen X = 48.0 %
1000 hijos -> 486 con el gen X = 48.6 %
100000 hijos -> 50259 con el gen X = 50.3 %
Tu salida será distinta: es azar.

Qué estamos midiendo realmente
El programa no predice qué hijo tendrá el gen. Solo cuenta, en una simulación, cuántos lo heredan.
La probabilidad (½) es una propiedad del proceso. La frecuencia (el porcentaje que sale) es un dato. Con pocos datos se separan; con muchos, se aproximan. A esto se le llama ley de los grandes números.
Además, un ordenador usa números pseudoaleatorios: parecen azar, pero salen de una fórmula.
Para el aula
- Predice: ¿qué porcentaje esperas con 4 hijos? ¿Y con 100 000? Anótalo antes de ejecutar.
- Compara: ejecuta el programa cinco veces y mide cuánto varía el resultado con 10 y con 1000 hijos.
- Datos de clase: cada alumno ejecuta una vez con 10 hijos; juntad los resultados en una hoja de cálculo y calculad la media.
- Pregunta de investigación: ¿cuántos hijos hacen falta para que el resultado quede casi siempre entre 45 % y 55 %?
Retos
- Haz que funcione: ejecuta el programa y comprueba que sale lo esperado.
- Modifica algo: cambia 0.5 por 0.25 y explica qué cambia.
- Añade un dato: calcula también el porcentaje de hijos que no heredan el gen.
- Familias de 3 hijos: simula 10 000 familias de 3 hijos y cuenta en cuántas al menos un hijo lo hereda. La teoría dice 87,5 %.
- Guarda los datos: escribe los resultados en un archivo de texto.
- Represéntalos: dibuja un gráfico de barras con
matplotlib. - Haz que otro participe: compara tu resultado con el de otro compañero.
- Pequeña investigación: diseña un experimento para estimar cuántos hijos necesitas para fiarte de un porcentaje.
Qué hemos aprendido
Con un bucle, una condición y random hemos hecho una simulación de herencia genética Python y hemos visto que la teoría se cumple de verdad cuando hay muchos datos.
También hemos aprendido que pocos casos pueden engañar, y por eso la ciencia necesita muestras grandes.
Para seguir investigando
- Chisme 189: ¿cuántos genes raros hay?, cuántas muestras de un gen son raras.
- Chisme 46: el dado de la Pi Pico, números aleatorios.
- Documentación del módulo random de Python.
- Wikipedia: leyes de Mendel.
Este chisme es un prototipo educativo: simula un caso sencillo y no sirve para estimar el riesgo de ninguna persona real.
Etiqueta:bachillerato, genética, probabilidad, python, random, simulación

