Egy bizonyos TRPG játékosának 6 képességpontszerű karaktere van, mindegyik képesség pontszáma 3-18. Ezek előállításának egyik módja az, hogy a 4d6-ot a legalacsonyabb értékre dobja az egyes pontszámoknál. Ez azt jelenti, hogy négy hatarcú dobókocka dobódik, és a három legmagasabb eredményt adjuk hozzá.
Mi az a várható legnagyobb különbség az 5 játékos közül kettő között a képességpontszámok összegében?
A kapcsolódó kérdés itt megmutatja, hogyan lehet a legalacsonyabb 4d3 eloszlást elérni, de hogyan juthatok onnan a fenti kérdésemre adott válaszra?
A jó válasz megmagyarázná az eredményt úgy, hogy egy statisztikai kezdő követhesse.
Válasz
$ \ newcommand {\ E} {\ mathbb {E}} $ (Ezt azért írom, ha feltételezem, hogy ismeri a valószínűségeloszlások és az elvárások manipulálását, de remélhetőleg semmi sem túl divatos. Mondja meg, ha magyaráznék még valamit. Ezt is meglehetősen számítási módon csinálom, hogy csak választ kapjak, ahelyett, hogy kézzel próbálnám megtenni az egészet.)
Tegyük fel, hogy $ n = 5 $ játékosunk van, akik mindegyike egy-egy karaktert görget fel 6 képességpontszám, mindegyiket $ X_ {ij} $ -nak jelölve. Határozza meg, hogy $ Y_i = \ sum_ {j = 1} ^ 6 X_ {ij} $ legyen a $ i $ th játékos képességeinek összege. Ezután $ Z = \ max_ {i várakozására kérdez rá , i “} \ lvert Y_i – Y_ {i”} \ rvert = Y _ {(n)} – Y _ {(1)} $, azzal a jelöléssel, hogy $ Y _ {(1)} $ az első rendezett érték a következőtől: $ \ {Y_1, \ pöttyök, Y_n \} $ (azaz a minimum) és $ Y _ {(n)} $ a $ n $ th (a maximum).
Egyéni pontszám: $ X_ {ij } $
A $ X_ {ij} $ eloszlásának legegyszerűbb módja, ahogy az Ön által összekapcsolt válaszban található, ha csak nyersen kényszeríti, figyelembe véve az összes lehetséges $ 6 ^ 4 = 1296 $ tekercset. Itt van néhány gyors Python-kód (erre valószínűleg jobb módszer van …):
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)
Teljes képesség pontszám $ Y_i $
Most megtalálhatjuk a képesség pontszámok összegének megoszlását, $ Y_i = X_ {i1} + X_ {i2} + \ dots + X_ {i6} $.
Mi a két független, diszkrét véletlen változó, $ A + B $ összegének eloszlása? Nos, $ \ Pr (A + B = c) = \ sum_ {k = – \ infty} ^ \ infty \ Pr (A = k) \ Pr (B = k – c) $. Kiderült, hogy ez a művelet konvolúció , és szerencsére a numpy-nak van egy funkciója, amely megteszi helyettünk. (A linkelt Wikipedia-cikkben valójában nem sok mindenről van szó; megpróbálhatja ezt Grinstead és Snell fejezet .)
Kód:
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)
A $ Y $ legmagasabb és legalacsonyabb értéke
Most, hogy ismerjük a $ Y_i $ eloszlását, kérdésünk: mi a maximális páronkénti távolság a $ Y $? Alternatív megoldásként, mi a különbség a legmagasabb és a legalacsonyabb $ Y $ között?
Az általunk fontos változót $ Z = Y _ {(n)} – Y _ {(1)} $ néven írva megvan hogy $ \ EZ = \ E Y _ {(n)} – \ E Y _ {(1)} $, mivel az elvárás lineáris. Ez megmenti azt a munkát, amelyet eredetileg e válasz megírásával végeztem a kettő közös eloszlásának kiszámításakor. 🙂
Először adjuk meg “s” a kumulatív eloszlásfüggvényt (cdf) $ \ Pr (Y \ le y) = \ sum_ {k = 0} ^ y \ Pr (Y = k) $. Ezután a $ Y _ {(n)} $ cdf értéke $$ \ begin {align *} \ Pr (Y _ {(n)} \ le y) & = \ Pr \ balra (Y_1 \ le y \ text {és} Y_2 \ le y \ text {és} \ dots \ text {és} Y_n \ le y \ right) \\ & = \ prod_ {i = 1} ^ n \ Pr \ balra (Y_i \ le y \ right) \\ & = \ Pr (Y \ le y) ^ n \ end {igazítás *} $$, mivel a $ Y_i $ független. Ezután, mivel $ Y _ {(n)} $ nem negatív egész számokat vesz fel, kiszámíthatjuk az elvárását $$ \ 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 *} $$ kód:
n_players = 5 total_cdf = np.cumsum(total_pmf) exp_max = np.sum(1 - total_cdf ** n_players)
exp_max
körülbelül 81 .5.
Hasonlóképpen, a min: $$ \ begin {align *} \ Pr \ left (Y _ {(1)} \ le y \ right) & = 1 – \ Pr \ bal (Y _ {(1)} > y \ right) \\ & = 1 – \ Pr \ balra (Y_1 > y \ text {és} \ dots \ text {és} Y_n > y \ right) \\ & = 1 – \ Pr \ balra (Y_i > y \ right) ^ n \\ & = 1 – \ left (1 – \ Pr \ left (Y \ le y \ right) \ right) ^ {n} \ end {align *} $$ és elvárása: $$ \ E Y _ {( 1)} = \ sum_ {y = 0} ^ \ infty \ Pr (Y _ {(1)} > y) = \ sum_ {y = 0} ^ \ infty \ balra (1 – \ Pr \ bal (Y \ le y \ jobb) \ jobb) ^ n $$
Kód:
exp_min = np.sum((1 - total_cdf) ** n_players)
exp_min
megkapja a 65.3-at.
Az 5 játékos közül a legszerencsésebb és a legszerencsétlenebb közötti várható különbség ekkor összesen 16,2 képességpont. (Ez nagyon sok!)
Egyébként megemlítettem, hogy kiszámítottam a $ Y _ {(1)} $ és $ Y _ {(n)} együttes eloszlását. $ (mint $ \ Pr (Y_ {n} = y “) \ Pr (Y _ {(1)} = y \ közepes Y _ {(n)} = y”) $). Kiderült, hogy öt játékos esetében a $ Y _ {(n)} – Y _ {(1)} $ eloszlása így néz ki:
Megjegyzések
- Ne feledje, hogy jobb lehet, ha egy képességkészlet minőségét az összpontszámuk helyett az összpontszámuk alapján értékelik. A bosszantó az, hogy ' 7-nél alacsonyabb pontszámot vásárol, így ' nem mindig pontosan definiált ….