¿Cómo resuelves el rompecabezas del juego de dados de PuzzleUp 2012?

[Eliminé esta respuesta cuando se señaló que este problema provenía de una competencia de rompecabezas activa , pero la competencia ya terminó.]

Usemos el mismo truco que usé en mi respuesta a Math Puzzles: si lanzo dos dados estándar repetidamente, anotando la suma de cada lanzamiento, en promedio, cuántas veces tendré que lanzar, para obtener tres lanzamientos consecutivos para estar estrictamente orden creciente? (Probablemente quieras leer eso primero.) Continúa tirando dados infinitamente, y cuando cualquiera de los jugadores gane, reinicia el juego y continúa. Estamos buscando la frecuencia promedio de victorias tanto para A como para B.

Averiguar qué rollos A y B ganan es un poco complicado porque tenemos que asegurarnos de que el juego no se reinició en el medio de su secuencia ganadora, por lo que hay algunos casos:

El jugador A gana en cualquier tirada que, para algunos [matemática] i, j \ ge 0 [/ matemática], termina

  • una secuencia creciente de al menos [matemática] 3i [/ matemática] pero menor que [matemática] 3i + 2 [/ matemática] tira menos de 7 (que no es la secuencia vacía que sigue a un 7), seguida de [matemática] 2j + 2 [/ matemáticas] 7s, o
  • una secuencia creciente de [matemáticas] 3i + 2 [/ matemáticas] pero no [matemáticas] 3i + 3 [/ matemáticas] tira menos de 7, seguido de [matemáticas] 2j + 3 [/ matemáticas] 7s.

El jugador B gana en cualquier tirada que, para algunos [matemática] i \ ge 0 [/ matemática], termina

  • una secuencia creciente de [matemática] 3i + 3 [/ matemática] pero no [matemática] 3i + 4 [/ matemática] tiradas, que no es un 7 en el que A ganó seguido de una secuencia creciente de [matemática] 3i + 2 [ / matemática] tira mayor que 7, o
  • un 7 en el que A ganó, seguido de una secuencia creciente de [matemáticas] 3i + 3 [/ matemáticas] tira mayor que 7.

Como en la otra pregunta, escribiremos las probabilidades en términos de algunos polinomios simétricos elementales. Abreviamos
[matemáticas] u_i = e_i (p_2, \ ldots, p_ {12}) [/ matemáticas],
[matemáticas] v_i = e_i (p_2, \ ldots, p_6) [/ matemáticas],
[matemáticas] w_i = e_i (p_8, \ ldots, p_ {12}) [/ matemáticas].
Podemos calcular esto de la siguiente manera:
[matemáticas] \ sum_i u_ix ^ i = (1 + p_2x) \ cdots (1 + p_ {12} x) [/ matemáticas]
[matemáticas] = 1 + x + \ tfrac {575} {1296} x ^ 2 + \ cdots + \ tfrac {25} {38084983750656} x ^ {11} [/ matemáticas],
[matemáticas] \ sum_i v_ix ^ i = (1 + p_2x) \ cdots (1 + p_6x) [/ matemáticas]
[matemáticas] = 1 + \ tfrac {5} {12} x + \ tfrac {85} {1296} x ^ 2 + \ cdots + \ tfrac {5} {2519424} x ^ 5 [/ matemáticas],
[matemáticas] w_i = v_i [/ ​​matemáticas] (por simetría).

Entonces, la frecuencia ganadora de A es
[matemáticas] f_A = \ bigl (\ sum_i (v_ {3i} – v_ {3i + 2}) – p_7 \ bigr) \ sum_j p_7 ^ {2j + 2} [/ matemáticas]
[matemáticas] {} + \ sum_i (v_ {3i + 2} – v_ {3i + 3}) \ sum_j p_7 ^ {2j + 3} [/ matemáticas]
[matemáticas] = \ frac {338047} {15116544} [/ matemáticas],
y la frecuencia ganadora de B es
[matemáticas] f_B = \ sum_i (u_ {3i + 3} – u_ {3i + 4} – f_A w_ {3i + 2}) [/ matemáticas]
[matemáticas] {} + f_A \ sum_i w_ {3i + 3} [/ matemáticas]
[matemáticas] = \ frac {450074090171} {4760622968832} [/ matemáticas].
Por lo tanto, la probabilidad de ganar de A es
[matemáticas] \ frac {f_A} {f_A + f_B} = \ frac {106460465616} {556534555787} \ aprox 0.191292 [/ matemáticas].

Puede hacer esto haciendo sistemas de ecuaciones para las probabilidades condicionales de que cada jugador gane, es decir, calcule la probabilidad de que A gane dado que las dos últimas tiradas fueron x e y para todo x e y, pero eso sería muy complicado y desordenado.

Un enfoque mucho más simple es simplemente simularlo.

import random wins = 0 games = 1000000 for i in range(games): a = 13 b = 13 c = 13 while True: a = b b = c c = random.randint(1, 6) + random.randint(1, 6) if b == c and b == 7: wins += 1 break elif a < b and b < c: break print "A won", wins, "games out of", games, "total" 

  ~ / python game.py 
 A 190869 juegos ganados de un total de 1000000
 ~ / python game.py 
 A 191487 juegos ganados de un total de 1000000
 ~ / python game.py 
 Un juego de 191668 ganado de un total de 1000000

Entonces, la probabilidad de que A gane es de aproximadamente 0.191.

p (X, N) = probabilidad X gana en el enésimo lanzamiento.
P (X, N) = probabilidad X gana en o antes del enésimo lanzamiento.

Condiciones iniciales
p (A, 1) = 0
p (A, 2) = (1/6) ^ 2
p (A, 3) = (1/6) ^ 2 * (5/6)
p (A, 4) = (1/6) ^ 2 * (5/6) – (1/36 * 1/18 * 1/6 * 1/6) – (editado) la primera lata de monedas por cualquier número, segundo es cualquier número que no sea 7 – caso cuando arroja resultados a 5,6,7, 7

p (B, 1) = 0
p (B, 2) = 0
p (B, 3) = – me entiendes. Resolver hasta p (B, 5). Se vuelve complicado en p (B, 4) yp (B, 5)

P (A, N) = suma (p (A, N)) de 1 a N.
P (B, N) = suma (p (B, N)) de 1 a N.

p (A, N) = (1/6) ^ 2 * (1 – (P (B, N-2) + P (A, N-2)))

Probabilidad A gana = Suma (p (A, N)), N de 1 para lo que pase.

Whoa! Este problema es ACTUALMENTE parte de una competencia. Ver:
http://www.puzzleup.com/2012/