Maksimal forventet forskjell mellom spillere når de bruker 4d6 slipp lavest

Spillere av en viss TRPG har tegn med 6 evighetspoeng, hver evighetspoeng varierer fra 3-18. En metode for å generere disse er ved å rulle 4d6 drop lavest for hver av poengene. Det betyr at fire terninger med seks ansikter kastes, og de tre høyeste resultatene blir lagt til.

Hva er den forventede høyeste forskjellen i summen av evneresultatene mellom 2 av disse 5 spillerne?

Det relaterte spørsmålet her viser hvordan du får fordelingen av 4d3 fallet lavest, men hvordan kommer jeg derfra til et svar på spørsmålet mitt ovenfor?

Et godt svar vil forklare resultatet på en måte som en nybegynner for statistikk kan følge.

Svar

$ \ newcommand {\ E} {\ mathbb {E}} $ (Jeg skriver dette forutsatt at du er kjent med å manipulere sannsynlighetsfordelinger og forventninger, men forhåpentligvis ikke noe fancy. Gi meg beskjed hvis jeg skulle forklare noe mer. Jeg gjør dette også på en ganske beregningsmessig måte for bare å få svar i stedet for å prøve å gjøre alt for hånd.)

Si at vi har $ n = 5 $ spillere som hver ruller opp ett tegn med 6 ferdighetspoeng, hver betegnet som $ X_ {ij} $. Definer $ Y_i = \ sum_ {j = 1} ^ 6 X_ {ij} $ for å være summen av $ i $ th-spillerens evner. Da spør du om forventningen til $ Z = \ max_ {i , i «} \ lvert Y_i – Y_ {i»} \ rvert = Y _ {(n)} – Y _ {(1)} $, med notasjonen at $ Y _ {(1)} $ er den første sorterte verdien fra $ \ {Y_1, \ dots, Y_n \} $ (dvs. minimum) og $ Y _ {(n)} $ er $ n $ th (maksimum).

Individuelle score $ X_ {ij } $

Den enkleste måten å finne fordelingen av $ X_ {ij} $, som i svaret du koblet, er å bare tvinge den ved å vurdere alle $ 6 ^ 4 = 1296 $ mulige ruller. Her er litt rask Python-kode (det er sannsynligvis en bedre måte å gjøre dette på …):

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) 

Total evighetspoeng $ Y_i $

Nå kan vi finne fordelingen av summen av evnescore, $ Y_i = X_ {i1} + X_ {i2} + \ dots + X_ {i6} $.

Hva er fordelingen av summen av to uavhengige, diskrete tilfeldige variabler $ A + B $? Vel, $ \ Pr (A + B = c) = \ sum_ {k = – \ infty} ^ \ infty \ Pr (A = k) \ Pr (B = k – c) $. Det viser seg at denne operasjonen er kjent som konvolusjon , og heldigvis har numpy en funksjon for å gjøre det for oss. (Den koblede Wikipedia-artikkelen har ikke mye om det for sannsynligheten; du kan prøve dette kapittel av Grinstead og Snell .)

Kode:

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) 

Høyeste og laveste verdier på $ Y $

Nå som vi vet fordelingen for $ Y_i $, er spørsmålet vårt: hva er den maksimale parvise avstanden mellom to elementer av $ Y $? Alternativt, hva er forskjellen mellom den høyeste og den laveste $ Y $?

Når vi skriver variabelen vi bryr oss om som $ Z = Y _ {(n)} – Y _ {(1)} $, har vi at $ \ EZ = \ E Y _ {(n)} – \ E Y _ {(1)} $, siden forventningen er lineær. Dette sparer arbeidet jeg opprinnelig skrev opp dette svaret i beregning av den felles fordelingen av de to. 🙂

La oss først definere den kumulative fordelingsfunksjonen (cdf) $ \ Pr (Y \ le y) = \ sum_ {k = 0} ^ y \ Pr (Y = k) $. Deretter er cdf til $ Y _ {(n)} $ $$ \ begin {align *} \ Pr (Y _ {(n)} \ le y) & = \ Pr \ left (Y_1 \ le y \ text {and} Y_2 \ le y \ text {and} \ dots \ text {and} Y_n \ le y \ right) \\ & = \ prod_ {i = 1} ^ n \ Pr \ left (Y_i \ le y \ right) \\ & = \ Pr (Y \ le y) ^ n \ end {align *} $$ siden $ Y_i $ er uavhengige. Da $ Y _ {(n)} $ tar ikke-negative heltalsverdier, kan vi beregne forventningen som $$ \ 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 *} $$ Kode:

n_players = 5 total_cdf = np.cumsum(total_pmf) exp_max = np.sum(1 - total_cdf ** n_players) 

får exp_max ca 81 .5.

Tilsvarende for min: $$ \ begin {align *} \ Pr \ left (Y _ {(1)} \ le y \ right) & = 1 – \ Pr \ left (Y _ {(1)} > y \ right) \\ & = 1 – \ Pr \ left (Y_1 > y \ text {and} \ dots \ text {and} 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 *} $$ og forventningen er: $$ \ E Y _ {( 1)} = \ sum_ {y = 0} ^ \ infty \ Pr (Y _ {(1)} > y) = \ sum_ {y = 0} ^ \ infty \ left (1 – \ Pr \ venstre (Y \ le y \ høyre) \ høyre) ^ n $$

Kode:

exp_min = np.sum((1 - total_cdf) ** n_players) 

får exp_min omtrent 65.3.

Den endelige forventede forskjellen mellom de heldigste og ulykkeligste av 5 spillere er da totalt 16,2 evnepoeng. (Det er ganske mye!)


For øvrig nevnte jeg at jeg beregnet den felles fordelingen av $ Y _ {(1)} $ og $ Y _ {(n)} $ (som $ \ Pr (Y_ {n} = y «) \ Pr (Y _ {(1)} = y \ mid Y _ {(n)} = y») $). Det viser seg at for fem spillere er distribusjon av $ Y _ {(n)} – Y _ {(1)} $ ser slik ut:

Kommentarer

  • Merk at det kan være bedre å evaluere kvaliteten på et sett med evner basert på deres totale poengkjøpspoeng, i stedet for summen. Det irriterende med det er at du kan ' t pek-kjøp en poengsum under 7, så det ' er ikke alltid veldefinert ….

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *