Los jugadores de un determinado TRPG tienen personajes con 6 puntuaciones de habilidad, cada puntuación de habilidad varía de 3-18. Un método para generarlos es tirando 4d6 drop más bajo para cada una de las puntuaciones. Eso significa que se tiran cuatro dados de seis caras y se agregan los tres resultados más altos.
¿Cuál es la diferencia más alta esperada en la suma de las puntuaciones de habilidad entre 2 de esos 5 jugadores?
La pregunta relacionada aquí muestra cómo obtener la distribución de 4d3 de caída más baja, pero ¿cómo puedo llegar desde allí a la respuesta de mi pregunta anterior?
Una buena respuesta explicaría el resultado de una manera que un principiante en estadística pueda seguir.
Responder
$ \ newcommand {\ E} {\ mathbb {E}} $ (Estoy escribiendo esto asumiendo que estás familiarizado con la manipulación de distribuciones de probabilidad y expectativas, pero con suerte nada demasiado sofisticado. Déjame saber si debo explicar algo más. También estoy haciendo esto de una manera bastante computacional para obtener una respuesta en lugar de intentar hacerlo todo a mano.)
Supongamos que tenemos $ n = 5 $ jugadores, cada uno con un carácter con 6 puntuaciones de habilidad, cada una indicada como $ X_ {ij} $. Defina $ Y_i = \ sum_ {j = 1} ^ 6 X_ {ij} $ para que sea la suma de las puntuaciones de habilidad del $ i $ ésimo jugador. Entonces se pregunta acerca de la expectativa de $ Z = \ max_ {i , i «} \ lvert Y_i – Y_ {i»} \ rvert = Y _ {(n)} – Y _ {(1)} $, usando la notación de que $ Y _ {(1)} $ es el primer valor ordenado de $ \ {Y_1, \ dots, Y_n \} $ (es decir, el mínimo) y $ Y _ {(n)} $ es el $ n $ th (el máximo).
Puntajes individuales $ X_ {ij } $
La forma más fácil de encontrar la distribución de $ X_ {ij} $, como en la respuesta que vinculó, es simplemente usar la fuerza bruta considerando todos los $ 6 ^ 4 = 1296 $ posibles tiradas. Aquí hay un código Python rápido (probablemente haya una mejor manera de hacer esto …):
import numpy as np import matplotlib.pyplot as plt def as_kth_of(a, k, n): """vector a => shape (1, ..., 1, a.size, 1, ..., 1) where new shape is length n, a.size is in kth""" return a[(np.newaxis,) * k + (slice(None),) + (np.newaxis,) * (n - k - 1)] def pmf_drop_lowest(sides, number): rolls = np.arange(1, sides + 1) totals = sum(as_kth_of(rolls, k, number) for k in xrange(number)) mins = np.ones_like(totals) * 10000 for k in xrange(number): mins = np.minimum(mins, as_kth_of(rolls, k, number)) return np.bincount((totals - mins).ravel()) / totals.size score_pmf = pmf_drop_lowest(6, 4) plt.bar(np.arange(score_pmf.size) - .5, score_pmf)
Puntaje de habilidad total $ Y_i $
Ahora podemos encontrar la distribución de la suma de puntajes de habilidad, $ Y_i = X_ {i1} + X_ {i2} + \ dots + X_ {i6} $.
¿Cuál es la distribución de la suma de dos variables aleatorias discretas e independientes $ A + B $? Bueno, $ \ Pr (A + B = c) = \ sum_ {k = – \ infty} ^ \ infty \ Pr (A = k) \ Pr (B = k – c) $. Resulta que esta operación se conoce como convolución y, afortunadamente, numpy tiene una función que lo hace por nosotros. (El artículo vinculado de Wikipedia no tiene mucho acerca de la probabilidad; puedes probar este capítulo de Grinstead y Snell .)
Código:
total_pmf = 1 for _ in xrange(6): total_pmf = np.convolve(total_pmf, score_pmf) plt.bar(np.arange(total_pmf.size) - .5, total_pmf)
Los valores más alto y más bajo de $ Y $
Ahora que conocemos la distribución de $ Y_i $, nuestra pregunta es: ¿cuál es la distancia máxima por pares entre dos elementos de $ Y $? Alternativamente, ¿cuál es la diferencia entre el $ Y $ más alto y el más bajo?
Escribiendo la variable que nos importa como $ Z = Y _ {(n)} – Y _ {(1)} $, tenemos que $ \ EZ = \ E Y _ {(n)} – \ E Y _ {(1)} $, ya que la expectativa es lineal. Esto ahorra el trabajo que hice al escribir originalmente esta respuesta al calcular la distribución conjunta de los dos. 🙂
Primero, definamos la función de distribución acumulativa (CDF) $ \ Pr (Y \ le y) = \ sum_ {k = 0} ^ y \ Pr (Y = k) $. Entonces, el CDF de $ Y _ {(n)} $ es $$ \ begin {align *} \ Pr (Y _ {(n)} \ le y) & = \ Pr \ left (Y_1 \ le y \ text {y} Y_2 \ le y \ text {y} \ dots \ text {y} Y_n \ le y \ right) \\ & = \ prod_ {i = 1} ^ n \ Pr \ left (Y_i \ le y \ right) \\ & = \ Pr (Y \ le y) ^ n \ end {align *} $$ ya que $ Y_i $ son independientes. Entonces, debido a que $ Y _ {(n)} $ toma valores enteros no negativos, podemos calcular su expectativa como $$ \ begin {align *} \ E Y _ {(n)} & = \ sum_ {y = 1} ^ \ infty \ Pr (Y _ {(n)} \ ge y) = \ sum_ {y «= 0} ^ \ infty \ Pr (Y _ {(n)} > y») \\ & = \ sum_ {y «= 0} ^ \ infty \ left (1 – \ Pr (Y _ {(n)} \ le y») \ right) = \ sum_ {y «= 0} ^ \ infty \ left (1 – \ Pr (Y \ le y «) ^ n \ right). \ End {align *} $$ Código:
n_players = 5 total_cdf = np.cumsum(total_pmf) exp_max = np.sum(1 - total_cdf ** n_players)
obteniendo exp_max
alrededor de 81 .5.
De manera similar, para el mínimo: $$ \ begin {align *} \ Pr \ left (Y _ {(1)} \ le y \ right) & = 1 – \ Pr \ left (Y _ {(1)} > y \ right) \\ & = 1 – \ Pr \ left (Y_1 > y \ text {y} \ dots \ text {y} Y_n > y \ right) \\ & = 1 – \ Pr \ left (Y_i > y \ right) ^ n \\ & = 1 – \ left (1 – \ Pr \ left (Y \ le y \ right) \ right) ^ {n} \ end {align *} $$ y su expectativa es: $$ \ E Y _ {( 1)} = \ sum_ {y = 0} ^ \ infty \ Pr (Y _ {(1)} > y) = \ sum_ {y = 0} ^ \ infty \ left (1 – \ Pr \ left (Y \ le y \ right) \ right) ^ n $$
Código:
exp_min = np.sum((1 - total_cdf) ** n_players)
obteniendo exp_min
aproximadamente 65,3.
La diferencia final esperada entre el más afortunado y el más desafortunado de los 5 jugadores es entonces un total de 16,2 puntos de habilidad. (¡Eso es mucho!)
Por cierto, mencioné que calculé la distribución conjunta de $ Y _ {(1)} $ y $ Y _ {(n)} $ (as $ \ Pr (Y_ {n} = y «) \ Pr (Y _ {(1)} = y \ mid Y _ {(n)} = y») $). Resulta que para cinco jugadores, el distribución de $ Y _ {(n)} – Y _ {(1)} $ se ve así:
Comentarios
- Tenga en cuenta que podría ser mejor evaluar la calidad de un conjunto de habilidades en función de su puntaje total de compra de puntos, en lugar de su suma. Lo molesto de esto es que puede ' t punto: compre una puntuación por debajo de 7, por lo que ' no siempre está bien definido ….