(edellisen vuoden ketjusta:)
Astigma wrote:En ole koskaan loistanut todennäköisyyslaskennassa, mutta eikös tässä tilanne ole periaatteessa sama kuin heittäisit samaa noppaa n kertaa ja sitten katsotaan mitä silmälukuja saatiin.
Esimerkiksi todennäköisyys sille, että kolmella nopalla saadaan pari (eli kolmesta nopasta kaksi osoittaa samaa lukua) on 1/6 * 1/6 * 5/6 + 1/6 * 5/6 * 1/6 + 5/6 * 1/6 * 1/6 = 7,96 %. Tuossa siis 1/6 tarkoittaa juuri jotain tiettyä lukua ja 5/6 sitä, että kyseisen nopan silmäluku on eri kuin kyseinen mikä on kahdella muulla nopalla. Toisin sanoen yleiskaava sille, että n:llä nopalla saadaan x samaa silmälukua on C(n, x) * ((1/6)^x * (5/6)^(n - x)). C(n, x) tarkoittaa siis "n yli x" merkintää. Lue lisää osoitteesta
http://fi.wikipedia.org/wiki/Kombinaatio.
axu wrote:
Kiitos. En tosin näe, miksi oletat, että viimeisen nopan täytyy näyttää eriä lukua, sillä kyllähän kolme samaa lukua sisältää myös parin. Tämähän yksinkertaistaa laskutoimitusta : 1/6*1/6 + 1/6*1/6 + 1/6*1/6 = 3*(1/6^2) = 8,33%. Ja yleisemmin n*(1/6^x). Tämä tosin ei auttanut eteenpäin alkuperäisen ongelman kanssa, jossa haetaan tiettyjä silmälukuja.
Kyllähän tuo kombinaatio tuttu käsite on. Käytinhän sitä omassakin viestissä, tosin en tiennyt, että se ilmoitetaan muodossa C(n, r) vaan käytin laskinten käyttämää n nCr r -muotoa.
EDIT:Tarkemmin ajatellen tuo kaavahan pitäisi olla n*(1/6^(x - 1)). Eihän ensimmäisellä nopalla ole väliä, minkä luvun saa jos mikä tahansa pari on käypä.
EDIT2:
Eipä tämä kaava sittenkään ole toimiva. Jos noppien lukumäärä on tarpeeksi iso, niin todennäköisyys nousee yli yhden Eli pitäisi ottaa huomioon vielä jotain.
Astigma wrote:
Oletin sen siksi, koska ajattelin, että sinulle käy vain pari eikä kolmosia lasketa mukaan. Huomasin omassa kaavassani kuitenkin virheen, joka selittää sen miksi todennäköisyys nousee yli yhden. Riittää, että lasketaan (1/6)^(x-1) * (5/6)^(n - x), koska sillä ei ole merkitystä missä järjestyksessä nopat on heitetty. Jos haluat muokata kaavaa siten, että myös kolmoset ovat pari, niin silloin kaava on muotoa (1/6)^x.
Joka tapauksessa sinun pitäisi ehkä selittää ongelmaasi tarkemmin, jotta pystyisi antamaan paremman kaavan. Mitä tarkoitat sillä, että haetaan tiettyjä silmälukuja? Alla esimerkkejä kolmen nopan silmälukukombinaatioiden todennäköisyyksistä:
Pari: 1/6 (myös kolmoset mahdollista)
Kolmoset: 1/6 * 1/6
Kaikki eri lukuja: 5/6 * 4/6
Kolme peräkkäistä lukua: 3/6 * 2/6 * 1/6
Kaikki parillisia/parittomia: 3/6 * 2/6 * 1/6
jne...
Noistahan esim "kaikki eri lukuja" ei voi enää toteutua kun noppia on 7 tai enemmän. En tiedä menikö vieläkään oikein, kun näin myöhään rupesin taas ajattelemaan, mutta ehkäpä jo oikeanpaan suuntaan
Ymmärrän, että kerron ongelman hieman hankalasti. Tuntien googlettelukaan ei tuota mitään tulosta, kun en keksi hakusanoja, joilla kuvata tätä ongelmaa.
Yritän nyt selittää mahdollisimman selvästi: Haen todennäköisyyttä mielivaltaiselle yhdistelmälle, oli se sitten
tietty pari,
tietty suora taikka "143XX" (ei kuitenkaan yleinen pari, suora tai muu yhdistelmä, jossa noppien silmälukujen pitää olla suhteessa toisiinsa). En tiedä, onko sellaista kaavaa tai algoritmia, mikä ottaisi kaikki tapaukset huomioon.
Tällä hetkellä onnistuu tietenkin ratkaisu löytymään, kun käydään kaikki vaihtoehdot systemaattisesti läpi ja verrataan onnistuneita yrityksiä kaikkiin yrityksiin. Seuraava ohjelmanpätkä osaa tehdä tämän, kun noppia on 4:
Code: Select all
Dim Goal$, CurGoal$
Repeat
Repeat
Goal = Input("Tavoiteltu 4:n nopan yhdistelmä (X=ei väliä): ")
DrawScreen
Until KeyHit(28) And Len(Goal) <= 4
CloseInput
AddText "Tavoiteltu 4:n nopan yhdistelmä: " + Goal
Goal = Replace(Goal, "X", "") //X:t eivät vaikuta, joten ne voidaan poistaa heti
Tot = 0 //Yritysten laskuri (lopussa 6^4)
Suc = 0 //Onnistumisen laskuri
For i1 = 1 To 6
For i2 = 1 To 6
For i3 = 1 To 6
For i4 = 1 To 6
CurGoal = Goal
i = InStr(CurGoal, Str(i1))
If i > 0 Then CurGoal = StrRemove(CurGoal, i, 1)
i = InStr(CurGoal, Str(i2))
If i > 0 Then CurGoal = StrRemove(CurGoal, i, 1)
i = InStr(CurGoal, Str(i3))
If i > 0 Then CurGoal = StrRemove(CurGoal, i, 1)
i = InStr(CurGoal, Str(i4))
If i > 0 Then CurGoal = StrRemove(CurGoal, i, 1)
If Len(CurGoal) = 0 Then Suc = Suc + 1
Tot = Tot + 1
Next i4
Next i3
Next i2
Next i1
AddText "Todennäköisyys: " + (Suc * 100.0 / Tot) + "%"
AddText ""
Forever
Mutta jos haluat muita, kuin 4:n nopan todennäköisyyksiä, pitäisi ohjelmaa mennä muuttamaan. Joko nyt valkenee?