Tracks
/
x86-64 Assembly
x86-64 Assembly
/
Ejercicios
/
Cumpleaños desconcertantes
Cumpleaños desconcertantes

Cumpleaños desconcertantes

Intermedia

Introducción

Apenas terminaste la universidad y organizas una gran fiesta para celebrar con amigos y familiares. Se han presentado más de 70 personas, incluido tu tío Ted, que es un poco excéntrico.

En una de sus típicas ocurrencias, te apuesta £100 a que al menos dos personas en la sala cumplen años el mismo día. Suena ridículo: hay muchas más fechas de cumpleaños posibles que invitados, así que aceptas con confianza.

Para tu asombro, después de anotar los cumpleaños de solo 32 invitados, ya encontraste dos que cumplen años el mismo día. Aceptas tu derrota y le entregas a tu tío Ted sus £100, pero algo no cuadra.

Al día siguiente, la curiosidad te puede. Una rápida búsqueda en internet te lleva a la paradoja del cumpleaños, que revela que con solo 23 personas, la probabilidad de que dos cumplan años el mismo día supera el 50 %.

Ah. Así que por eso tu tío Ted estaba tan seguro.

Con la idea de darle la vuelta a la situación, empiezas a buscar otras paradojas; la próxima vez, tú serás quien haga las apuestas.

Note

La paradoja del cumpleaños es una paradoja verídica: aunque parece incorrecta, en realidad es cierta.

Instrucciones

Tu tarea es estimar las probabilidades de la paradoja del cumpleaños.

Para hacerlo, necesitas:

  • Generar fechas de nacimiento aleatorias.
  • Comprobar si una colección de fechas de nacimiento generadas aleatoriamente contiene al menos dos con el mismo cumpleaños.
  • Estimar la probabilidad de que al menos dos personas de un grupo compartan el mismo cumpleaños para distintos tamaños de grupo.
Note

Una fecha de nacimiento incluye la fecha completa de nacimiento (año, mes y día), mientras que un cumpleaños se refiere solo al mes y el día, que se repiten cada año. Dos fechas de nacimiento con el mismo mes y día corresponden al mismo cumpleaños.

Caution

La paradoja del cumpleaños supone que:

  • Hay 365 cumpleaños posibles (sin años bisiestos).
  • Cada cumpleaños tiene la misma probabilidad (distribución uniforme).

Tu implementación debe seguir estos supuestos.

Notas específicas de x86-64 Assembly

La función random_birthdates() debe producir fechas con las siguientes propiedades:

  1. El año debe ser válido. Un año válido y no es bisiesto y cumple que 1600 <= y < 2129.
  2. El año se distribuye uniformemente en todo el rango de valores válidos.
  3. El cumpleaños se distribuye uniformemente entre los 365 días del año, de modo que cada día del calendario sea igualmente probable. Fíjate que esto significa que los meses no son igualmente probables: un mes de 31 días es más probable que uno de 30 días, y ambos son más probables que febrero.

Tanto la distribución del año como la del cumpleaños se comprueban con una prueba de chi-cuadrado, a un nivel de p < 0.0001.

Esto significa que, si las fechas se generan de acuerdo con las instrucciones, hay menos de un 0.01% de probabilidad de que se produzca una distribución de valores que falle la prueba.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
x86-64 Assembly Exercism

¿Todo listo para empezar Cumpleaños desconcertantes?

Regístrate en Exercism para aprender y dominar x86-64 Assembly con 22 conceptos130 ejercicios y mentoría humana real, todo gratis.