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

Cumpleaños desconcertantes

Media

Introducción

Recién salido de la universidad, organizas una gran fiesta para celebrarlo con tus amigos y tu familia. Se han presentado más de 70 personas, entre ellas tu tío Ted, un tanto excéntrico.

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

Para tu asombro, tras reunir los cumpleaños de solo 32 invitados, ya has encontrado a 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 puede contigo. Una búsqueda rápida 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.

Decidido a 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 falsa, en realidad es cierta.

Instrucciones

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

Para ello, tienes que:

  • 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 (año, mes y día), mientras que un cumpleaños se refiere únicamente al mes y al 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 parte de las siguientes suposiciones:

  • Hay 365 cumpleaños posibles (no hay años bisiestos).
  • Todos los cumpleaños son igual de probables (distribución uniforme).

Tu implementación debe seguir estas suposiciones.

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 tiene la misma probabilidad. Ten en cuenta que esto significa que los meses no tienen la misma probabilidad: 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, con un nivel de p < 0,0001.

Esto significa que, si las fechas se generan de acuerdo con las instrucciones, la probabilidad de obtener una distribución de valores que no supere la prueba es inferior al 0,01 %.

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

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