[mathjax]
En promedio ¿en qué ronda voy a obtener mi carta core?
Puedes leer la parte anterior de esta serie aquí
Ahora estamos hablando de valor esperado. Para una variable aleatoria discreta, este se define como:
Aquí he escrito como
Esto es: la sumatoría de la probabilidad de cada evento multiplicada por el evento en si. Para un dado de seis caras (d6) sería
Esto quiere decir que, en promedio, nuestras tiradas de un d6 van a resultar en un
Para nuestro deck de arkham este valor esperado se calcularía de la siguiente manera. Primero vamos a suponer que seguimos la estrategía anterior, es decir, hicimos nuestro mulligan de 5 cartas, usamos nuestras primeras tres acciones para tomar tres cartas y tomamos nuestra carta de upkeep. También vamos a suponer que en todas las rondas subsecuentes solo tomamos nuestra carta de upkeep. Entonces:
Para cualquier ronda
La probabilidad (1) es muy fácil. Si
La forma de calcular (2) es un poco más elaborada.
Esa pi mayúscula significa producto, y toda la expresión quiere decir que vamos a multiplicar todas las probabilidades de que no hayamos sacado la carta core en cada ronda anterior. Por ejemplo, para
Recordemos que
Vamos a utilizar
Esto debido a que la probabilidad de que ocurra el evento Pero esta serie se esta volviendo un poco más complicada de lo que esperaba entonces no voy a explicar independencia… aunque debería.
Finalmente, nuestro valor esperado se calcularía como:
Y en forma de bonita tabla:
1 | 33 | 0.419 | 0.581 | 1.0000 | 0.4194 |
2 | 24 | 0.042 | 0.958 | 0.5806 | 0.0484 |
3 | 23 | 0.043 | 0.957 | 0.5565 | 0.0726 |
4 | 22 | 0.045 | 0.955 | 0.5323 | 0.0968 |
5 | 21 | 0.048 | 0.952 | 0.5081 | 0.1210 |
6 | 20 | 0.050 | 0.950 | 0.4839 | 0.1452 |
7 | 19 | 0.053 | 0.947 | 0.4597 | 0.1694 |
8 | 18 | 0.056 | 0.944 | 0.4355 | 0.1935 |
9 | 17 | 0.059 | 0.941 | 0.4113 | 0.2177 |
10 | 16 | 0.063 | 0.938 | 0.3871 | 0.2419 |
11 | 15 | 0.067 | 0.933 | 0.3629 | 0.2661 |
12 | 14 | 0.071 | 0.929 | 0.3387 | 0.2903 |
13 | 13 | 0.077 | 0.923 | 0.3145 | 0.3145 |
14 | 12 | 0.083 | 0.917 | 0.2903 | 0.3387 |
15 | 11 | 0.091 | 0.909 | 0.2661 | 0.3629 |
16 | 10 | 0.100 | 0.900 | 0.2419 | 0.3871 |
17 | 9 | 0.111 | 0.889 | 0.2177 | 0.4113 |
18 | 8 | 0.125 | 0.875 | 0.1935 | 0.4355 |
19 | 7 | 0.143 | 0.857 | 0.1694 | 0.4597 |
20 | 6 | 0.167 | 0.833 | 0.1452 | 0.4839 |
21 | 5 | 0.200 | 0.800 | 0.1210 | 0.5081 |
22 | 4 | 0.250 | 0.750 | 0.0968 | 0.5323 |
23 | 3 | 0.333 | 0.667 | 0.0726 | 0.5565 |
24 | 2 | 0.500 | 0.500 | 0.0484 | 0.5806 |
25 | 1 | 1.000 | 0.000 | 0.0242 | 0.6048 |
De modo que, en promedio, vamos a tomar nuestra carta core en la ronda 8.25
Una vez más, programaticamente
def RoundCore():
R = 1
ad = PlayerDeck([
Card(name='Forbidden Knowledge', kind='asset'),
Card(name='Holy Rosary', kind='asset'),
Card(name='Shrivelling', kind='asset', core=True),
Card(name='Scrying', kind='asset'),
Card(name='Arcane Studies', kind='asset'),
Card(name='Arcane Initiate', kind='asset'),
Card(name='Drawn to the Flame', kind='event'),
Card(name='Ward of Protection', kind='event'),
Card(name='Blinding Light', kind='event'),
Card(name='Fearless', kind='skill'),
Card(name='Leather Coat', kind='asset'),
Card(name='Scavenging', kind='asset'),
Card(name='Baseball Bat', kind='asset'),
Card(name='Rabbit\'s Foot', kind='asset'),
Card(name='Stray Cat', kind='asset'),
Card(name='Dig Deep', kind='asset'),
Card(name='Cunning Distraction', kind='event'),
Card(name='Look what I found!', kind='event'),
Card(name='Lucky!', kind='event'),
Card(name='Survival Instinct', kind='skill'),
Card(name='Heirloom of Hyperborea: Artifact from Another Life', kind='asset'),
Card(name='Dark Memory', kind='weakness'),
Card(name='Haunted', kind='weakness'),
Card(), Card(), Card(), Card(), Card(), Card(), Card(), Card(), Card(), Card(),
])
for i in range(2):
j = 0
while j < 5:
if ad.draw(initial=True).core:
return R
j+=1
else:
ad.mulligan(r=5)
j = 0
while j < 4:
if ad.draw().core:
return R
j+=1
while True:
R += 1
c = ad.draw()
if c.core:
return R
Lenguaje del código: PHP (php)
rounds = 0
tries = 100000
for i in range(tries):
rounds += RoundCore()
print("In avarage, the core card was drawed in the round:", rounds / tries)
Lenguaje del código: PHP (php)
In avarage, the core card was drawed in the round: 8.26042
Lenguaje del código: CSS (css)
Que una vez más es bastante cercano a nuestro modelo
¿Qué podemos concluir?
Personalmente no creo que valga la pena gastar acciones en tomar cartas después de la primera ronda, porque el encounter deck te va a poner el pie tan rápido como pueda. Entonces creo que si aun con la estrategia de Mulligan y tomar 3 cartas no tienes tu core en la mano, necesitas estar lista para adaptar tu estrategia.
Esta es la segunda parte de tres en una mini serie de probabilidad en Arkham Horror. Puedes leer las otras dos partes aquí: