"Epäkelpo lomake" tyyliset virheet kirjautumisessa pitäisi olla nyt historiaa. T. ylläpito

Todennäköisyyksien laskeminen?

Warhammer Fantasy Battles -pelin palsta, jossa on tarkoitus keskustella kaikista niistä aiheista, jotka eivät sovellu muihin otsikoihin. Kysymyksiinkin vastataan, mutta käytä kuitenkin ensin hakua.
Avatar
Runt
Viestit: 2057
Liittynyt: Ma 15.12.2008 21:05
Paikkakunta: Pori

Todennäköisyyksien laskeminen?

Viesti Kirjoittaja Runt »

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ä.
Avatar
Samsson
Valvoja
Viestit: 3359
Liittynyt: To 30.05.2002 14:32
Paikkakunta: Kauniainen

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja Samsson »

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.
Avatar
jullevi
Valvoja
Viestit: 5724
Liittynyt: Ke 22.05.2002 15:38
Paikkakunta: Tampere

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja jullevi »

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.
Tarkoittaa myös että joka kuudes lyönti tekee haavan.
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.

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."
Avatar
Samsson
Valvoja
Viestit: 3359
Liittynyt: To 30.05.2002 14:32
Paikkakunta: Kauniainen

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja Samsson »

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.
Totta.
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ä.
Avatar
Runt
Viestit: 2057
Liittynyt: Ma 15.12.2008 21:05
Paikkakunta: Pori

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja Runt »

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.
Minun mielipiteeni ovat toisille vääriä, joidenkin mielipiteet ovat minulle yhden tekeviä.
Hakkapeto
Viestit: 136
Liittynyt: To 08.06.2006 10:52
Paikkakunta: Espoo

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja Hakkapeto »

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.
Avatar
jullevi
Valvoja
Viestit: 5724
Liittynyt: Ke 22.05.2002 15:38
Paikkakunta: Tampere

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja jullevi »

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.
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.

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."
Arkku
Viestit: 28
Liittynyt: Ma 22.06.2009 00:59
Paikkakunta: Helsinki
Viesti:

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja Arkku »

"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):

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}"
Tämä yksinkertainen Ruby-ohjelma suorittaa em. Ld6-testin 10,000 kertaa (kestää nykykoneilla luokkaa millisekunteja) ja tulostaa arvion todennäköisyydestä, esim.:

Koodi: Valitse kaikki

Onnistumisia: 6812/10000
Todennäköisyys noin: 0.6812
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:

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
Avatar
TomiTo
Viestit: 6
Liittynyt: Pe 25.04.2008 22:50

Re: Todennäköisyyksien laskeminen?

Viesti Kirjoittaja TomiTo »

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.
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.
Vastaa Viestiin

Palaa sivulle “FB: Yleiset keskustelut”