Interviewstreet tuvo su segundo CodeSprint en enero que incluía la siguiente pregunta. La respuesta programática se publica pero no incluye una explicación estadística.
(Puede ver el problema original y la solución publicada iniciando sesión en el sitio web de Interviewstreet con créditos de Google y luego yendo al problema de Lanzamiento de monedas desde esta página ).
Lanzamientos de monedas
Tienes una moneda imparcial que quieres seguir lanzando hasta que obtengas N caras consecutivas. Lanzaste la moneda M veces y, sorprendentemente, todos los lanzamientos resultaron en caras.
¿Cuál es el número esperado de lanzamientos adicionales necesarios hasta obtener N caras consecutivas?
Entrada:
La primera línea contiene el número de casos T. Cada una de las siguientes líneas T contiene dos números N y M.
Salida:
líneas T de salida que contienen la respuesta para el caso de prueba correspondiente. Imprima la respuesta redondeada a exactamente 2 decimales.
Entrada de muestra:
4
2 0
2 1
3 3
3 2
Salida de muestra:
6.00
4.00
0.00
8.00
Explicaciones de muestra:
Si N = 2 y M = 0, debe seguir lanzando la moneda hasta obtener 2 caras consecutivas. No es difícil demostrar que, en promedio, se necesitan 6 lanzamientos de monedas.
Si N = 2 y M = 1, necesitas 2 caras consecutivas y ya tienes 1. Necesitas lanzar una vez más sin importar qué. En ese primer lanzamiento, si obtienes cara, ya está. De lo contrario, debe comenzar de nuevo, ya que el contador consecutivo se reinicia, y debe seguir lanzando la moneda hasta obtener N = 2 caras consecutivas. El número esperado de lanzamientos de monedas es, por lo tanto, 1 + (0.5 * 0 + 0.5 * 6) = 4.0 Si N = 3 y M = 3, ya tiene 3 caras, por lo que no necesita más lanzamientos.
Todas las ecuaciones matemáticas que se me ocurrieron tenían las respuestas correctas para los datos de entrada de muestra enumerados anteriormente, pero estaban equivocados para todos sus otros conjuntos de entrada (que no se conocen). Su solución programática parece resolver el problema de manera muy diferente a mi método de intentar crear una ecuación. ¿Alguien puede explicar cómo llegar a una ecuación que resuelva esto?