Todennäköisyyksien laskeminen?
Todennäköisyyksien laskeminen?
Olisiko jollain laittaa kaava jolla lasketaan taistelutuloksien todennäköisyyksiä? Tai vaihtoehtoisesti selostaa miten tuo todennäköisyys taistelussa lasketaan, niin että mukana on myös save heitot.
Minun mielipiteeni ovat toisille vääriä, joidenkin mielipiteet ovat minulle yhden tekeviä.
Re: Todennäköisyyksien laskeminen?
Koska Warhammerit perustuu kuusisivuisten noppien heittelyyn, melkein aina lasketaan todennaköisyydet 1/6 kertaa jotain.
Eli jos osut 4+, todennäköisyys osua on 3/6 (kolme kertaa kuudesta se osuu siis).
Tätä tapaa jos seuraat, saat kolme "tulosta" mitä sitten kerrataan yhteen, eli osumat, haavoittaminen sekä savet.
Esimerkki tapaus:
4+ osuu, joten 3/6 osuu.
4+ haavoittaa, joten 3/6 tekee tuloksia.
5+ panssari, joten 4/6 menee läpi.
3/6 kertaa 3/6 kertaa 4/6 = 36/216 = ~16,7% todennäköisyys haavoittaa joka lyönnillä. Tarkoittaa myös että joka kuudes lyönti tekee haavan.
Eli jos osut 4+, todennäköisyys osua on 3/6 (kolme kertaa kuudesta se osuu siis).
Tätä tapaa jos seuraat, saat kolme "tulosta" mitä sitten kerrataan yhteen, eli osumat, haavoittaminen sekä savet.
Esimerkki tapaus:
4+ osuu, joten 3/6 osuu.
4+ haavoittaa, joten 3/6 tekee tuloksia.
5+ panssari, joten 4/6 menee läpi.
3/6 kertaa 3/6 kertaa 4/6 = 36/216 = ~16,7% todennäköisyys haavoittaa joka lyönnillä. Tarkoittaa myös että joka kuudes lyönti tekee haavan.
Re: Todennäköisyyksien laskeminen?
Samssonin esittelemä menetelmä toimii tiettyyn pisteeseen asti. Sillä on matemaattisesti oikea ja vieläpä kohtuu yksinkertainen tapa laskea yksittäisen nopanheiton tai tapahtumasarjan todennäköisyys. Sillä voi myös "ennustaa" montako woundia isommasta läjästä hyökkäyksiä keskimäärin tulee, mutta se ei ilmoita miten todennäköisiä eri woundimäärät ovat.
Taistelutulosten todennäköisyyttä yllä esitetyllä menetelmällä ei voi laskea. Jos näin halutaan kuitenkin tehdä, niin silloin pitää ottaa huomioon kaikki mahdolliset lopputulokset ja niiden todennäköisyydet.
Tässä tuleekin esille odotusarvon harhaanjohtavuus. On kyllä totta, että kuuden heiton odotusarvo 1/6 haavoittamistodennäköisyydellä on 1. Odotusarvo ei kuitenkaan kerro, että on n. 33% todennäkoisyys olla tekemättä yhtään woundia ja toisaalta n. 27% todennäköisyys tehdä enemmän kuin yksi woundi.Tarkoittaa myös että joka kuudes lyönti tekee haavan.
Taistelutulosten todennäköisyyttä yllä esitetyllä menetelmällä ei voi laskea. Jos näin halutaan kuitenkin tehdä, niin silloin pitää ottaa huomioon kaikki mahdolliset lopputulokset ja niiden todennäköisyydet.
"It's a great excuse to start collecting ANOTHER army. One can never have enough armies and starting a new one is always exciting."
Re: Todennäköisyyksien laskeminen?
Totta.jullevi kirjoitti:Taistelutulosten todennäköisyyttä yllä esitetyllä menetelmällä ei voi laskea. Jos näin halutaan kuitenkin tehdä, niin silloin pitää ottaa huomioon kaikki mahdolliset lopputulokset ja niiden todennäköisyydet.
Silloin pitää ottaa huomioon attackien määrä, todennäköisyydet että menetät osa näistä hyökkäyksistä ennen kuin pääset lyömään, todennäköiset läpi menneet wuondit, boonuksia rankeistä, flankeistä, rearistä, lipuista, jne. Sotkuinen homma, mutta mahdollista tehdä kyllä.
Re: Todennäköisyyksien laskeminen?
Tuolla kaavalla päästään alkuun ainakin, saadaan siis tieto onko yksikkö A vai yksikkö B vahvempi keskenäisessä taistelussa. Tällöin pystytään jo laskemaan millä yksiköllä kannattaa mitäkin yksikköä lähteä metsästämään.
Toki muuttuvia tekijöitä pitää tätä laskiessa ottaa huomioon mutta ainakin apua tästä on alkuun. Eli pahasti ei ainakaan mennä pieleen.
Kiitoksia vastauksissa, toki keskustelua saa jalostaa pidemmälle sillä en usko että olen ainoa jota todennäköisyydet kiinnostavat. Peli itsestään perustuu kuitenkin todennäköisyyksiin ja pieneltä osalta tuuriin.
Toki muuttuvia tekijöitä pitää tätä laskiessa ottaa huomioon mutta ainakin apua tästä on alkuun. Eli pahasti ei ainakaan mennä pieleen.
Kiitoksia vastauksissa, toki keskustelua saa jalostaa pidemmälle sillä en usko että olen ainoa jota todennäköisyydet kiinnostavat. Peli itsestään perustuu kuitenkin todennäköisyyksiin ja pieneltä osalta tuuriin.
Minun mielipiteeni ovat toisille vääriä, joidenkin mielipiteet ovat minulle yhden tekeviä.
Re: Todennäköisyyksien laskeminen?
Pistetään nyt tähän samaan aikoinaan itseäni mietityttänyt lasku. Luvut olen kyllä jo netistä löytänyt, joten tämä nyt kiinnostaa lähinnä matemaattisesti.
Miten siis lasketaan Cold Blooded Ld testin onnistumis todennäköisyys. Eli heitetään kolme noppaa, joista huomioidaan kaksi pienintä tulosta.
Tän vois tietysti laskea klassisesti jakamalla suotuisten alkeistapausten määrä kaikkien alkeistapausten määrällä, mutta menee kovin työlääksi.
Miten siis lasketaan Cold Blooded Ld testin onnistumis todennäköisyys. Eli heitetään kolme noppaa, joista huomioidaan kaksi pienintä tulosta.
Tän vois tietysti laskea klassisesti jakamalla suotuisten alkeistapausten määrä kaikkien alkeistapausten määrällä, mutta menee kovin työlääksi.
Re: Todennäköisyyksien laskeminen?
En nyt muista mitään kikkaa tähän, mutta jos käsipelillä joutuisin laskemaan niin ottaisin lähtökohdaksi että ne kaksi ensimmäistä noppaa on jo heitetty ja katsoisin miten kolmas noppa vaikuttaa. Käytännössä menisi siis alkeistapausten laskemiseksi.Hakkapeto kirjoitti:Pistetään nyt tähän samaan aikoinaan itseäni mietityttänyt lasku. Luvut olen kyllä jo netistä löytänyt, joten tämä nyt kiinnostaa lähinnä matemaattisesti.
Miten siis lasketaan Cold Blooded Ld testin onnistumis todennäköisyys. Eli heitetään kolme noppaa, joista huomioidaan kaksi pienintä tulosta.
Tän vois tietysti laskea klassisesti jakamalla suotuisten alkeistapausten määrä kaikkien alkeistapausten määrällä, mutta menee kovin työlääksi.
Esim. Ld6 cold-blooded onnistuu ensinnäkin kaikilla tuloksilla, joilla kaksi ensimmäistä noppaa on yhteensä korkeintaan 6. Tällaisia tuloksia on kahdella nopalla 15 erilaista. Jokaista näitä kohden on 6 eri kolmannen nopan tulosta, joilla testi onnistuu. Nyt on saatu ne helpoimmat 15x6=90 suotuisaa alkeistapausta.
Seiskan heitoista (1,6) antaa vielä 5 mahdollisuutta selvitä, (2,5) antaa 4 ja (3,4) 3 mahdollisuutta. Kun ottaa peilikuvaheitot huomioon, saadaan 24 uutta suotuisaa alkeistapausta.
Kasin heitoista (2,6) ja (6,2) antaa 4, (3,5) ja (5,3) antaa 3 ja (4,4) 2 tapausta selvitä. Yhteensä 16.
Ysin heitoista (3,6) ja (6,3) antaa 3, (4,5) ja (5,4) antaa 2 suotuisaa. Yhteensä 10.
Kympin heitoista (4,6) ja (6,4) antaa 2 ja (5,5) yhden suotuisan lisää eli 5.
Yhdentoista heitoista molemmista löytyy yksi pelastus (6,5,1) ja (5,6,1) eli yhteensä 2.
Jos kahdella ekalla on heitetty tuplakutoset, olet lirissä.
Suotuisia alkeistapauksia käsipelillä laskettuna yhteensä 90+24+16+10+5+2=147. Kaikkia mahdollisia 6x6x6=216. Todennäköisyys onnistua testissä 147/216 = 0,68.
Kun tämän on yhdelle luvulle laskenut, loput on paljon nopeampi laskea. Kaikista helpoin tapa on tietysti luetella kaikki alkeistapaukset vaikka exceliin ja poimia sieltä suotuisat. EDIT: Tajusin vasta nyt, että esimerkiksi olisi voinut ottaa jonkun helpomman, vaikka Ld9:n.
"It's a great excuse to start collecting ANOTHER army. One can never have enough armies and starting a new one is always exciting."
Re: Todennäköisyyksien laskeminen?
"Vaikeissa" (ts. monimutkaisissa) todennäköisyyslaskuissa helppo tapa arvioida todennäköisyyden suuruusluokkaa tietokoneen avulla on ns. Monte Carlo -menetelmä. Menetelmässä tehdään ohjelma joka suorittaa haluttua testiä satunnaisesti (eli tässä tapauksessa simuloi nopanheittoja arpomalla lukuja). Testiä toistetaan useita kertoja ja lasketaan kuinka monta näistä toistoista johti suotuisaan tulokseen (ts. siihen tulokseen jonka todennäköisyyttä halutaan laskea).
Esimerkiksi yllä mainittu Cold Onen Ld6-testi (heitetään kolme noppaa, huomioidaan kaksi pienintä, testi onnistuu jos summa on <= 6):
Tämä yksinkertainen Ruby-ohjelma suorittaa em. Ld6-testin 10,000 kertaa (kestää nykykoneilla luokkaa millisekunteja) ja tulostaa arvion todennäköisyydestä, esim.:
Koska tulos perustuu satunnaiseen testaukseen, jokainen ajo tuottaa hieman eri tuloksen, mutta näinkin pienellä määrällä toistoja (10,000) tulos pyöristyy käytännössä aina prosentin tarkkuudella tuohon 68%, joka aiemmin tässä ketjussa esitetyn eksaktin laskun perusteella onkin oikea vastaus. Tarkkuuden puolesta tämä menetelmä ei siis ole yhtä hyvä, sillä tulos on aina arvio ja teoriassa on mahdollista (joskin äärimmäisen epätodennäköistä) saada vastaukseksi vaikkapa 0% tai 100%. (Mitä enemmän testejä ajetaan, sitä todennäköisempää on päästä lähelle oikeaa vastausta.) Menetelmän merkittävä etu on kuitenkin siinä, että esimerkiksi Ld7- tai Ld9-testin todennäköisyyden arvioiminen vaatii ohjelmasta vain yhden numeron muuttamisen, mutta tarkan vastauksen saaminen alkeistapauksia laskemalla vaatisi vaihtoehtojen käymisen uudelleen läpi.
Tämä on siis eräänlainen laiskan miehen (tai naisen) ratkaisu, jonka toteuttamiseksi vaaditaan vain taito ohjelmoida yhden kokeen ajaminen, mikä nopanheittojen tapauksessa on erittäin suoraviivaista (eikä ohjelmointitehtävän monimutkaisuus olennaisesti muutu nopanheittojen määrän kasvaessa, toisin kuin alkeistapauksia laskettaessa). Peruskaava on siis:
Esimerkiksi yllä mainittu Cold Onen Ld6-testi (heitetään kolme noppaa, huomioidaan kaksi pienintä, testi onnistuu jos summa on <= 6):
Koodi: Valitse kaikki
# Määritellään avuksi "nopanheitto":
def nopanheitto
1 + rand(6)
end
LD = 6 # Testin vaikeus (tässä Ld = 6)
onnistumisia, kokeita = 0, 0 # Alustetaan laskurit nollaan
while kokeita < 10000 # Toistetaan testi 10,000 kertaa
kokeita += 1
# Järjestetään kolmen nopanheiton tulokset:
heitot = [ nopanheitto, nopanheitto, nopanheitto ].sort
# Kunkin kokeen tuloksissa huomioidaan kaksi pienintä heittoa:
summa = heitot[0] + heitot[1]
# Lasketaan onnistumiset:
onnistumisia += 1 if summa <= LD
end
# Lopuksi tulostetaan arvioitu todennäköisyys:
puts "Onnistumisia: #{onnistumisia}/#{kokeita}"
puts "Todennäköisyys noin: #{onnistumisia / kokeita.to_f}"
Koodi: Valitse kaikki
Onnistumisia: 6812/10000
Todennäköisyys noin: 0.6812
Tämä on siis eräänlainen laiskan miehen (tai naisen) ratkaisu, jonka toteuttamiseksi vaaditaan vain taito ohjelmoida yhden kokeen ajaminen, mikä nopanheittojen tapauksessa on erittäin suoraviivaista (eikä ohjelmointitehtävän monimutkaisuus olennaisesti muutu nopanheittojen määrän kasvaessa, toisin kuin alkeistapauksia laskettaessa). Peruskaava on siis:
Koodi: Valitse kaikki
muuttuja o saa arvon 0
muuttuja k saa arvon 0
niin kauan kuin k < haluttu määrä testejä, toistetaan:
muuttuja k saa arvon (k + 1)
suoritetaan yksi satunnainen testitapaus
jos testitapaus "onnistui" (ts. saatiin suotuisa tulos), muuttuja o saa arvon (o + 1)
Arvioitu todennäköisyys on lopuksi: o / k
Re: Todennäköisyyksien laskeminen?
Jos itselleni tulee joskus tarve tarkistaa miten omat yksiköt pärjää taistelussa käytän ihan suosiolla tämän kaverin laskureita.
http://folk.ntnu.no/tarjeia/avian/subpa ... lculations
Näillä pitäisi jo päästä aika pitkälle.
http://folk.ntnu.no/tarjeia/avian/subpa ... lculations
Näillä pitäisi jo päästä aika pitkälle.
92% of teens have moved on to rap. If you are part of the 8% who still listen to real music, copy and paste this into your signature.
Metal is what we love.
Metal is what we love.