Risk

Continue & discrete verdelingen, toevalsveranderlijken, betrouwbaarheidsintervallen, correlaties.
Dux
Vast lid
Vast lid
Berichten: 74
Lid geworden op: 13 jul 2012, 12:38

Risk

Bericht door Dux » 06 okt 2013, 11:19

Als persoon A met a dobbelstenen gooit en persoon B met b dobbelstenen, wat is de kans dat Sa (som dobbelstenen a) > Sb?

Dit is geen opdracht, maar ik heb er zelf over na zitten denken en kom er niet uit. Ik zou een programma kunnen schrijven, maar liever heb ik een formule (al dan niet een benadering).

arno
Vergevorderde
Vergevorderde
Berichten: 1923
Lid geworden op: 25 dec 2008, 16:28
Locatie: Beek en Donk, Noord-Brabant

Re: Risk

Bericht door arno » 06 okt 2013, 11:50

Ga uit van het gegeven dat je met 1 dobbelsteen minimaal 1 en maximaal 6 kunt gooien.
"Mathematics is a gigantic intellectual construction, very difficult, if not impossible, to view in its entirety." Armand Borel

Dux
Vast lid
Vast lid
Berichten: 74
Lid geworden op: 13 jul 2012, 12:38

Re: Risk

Bericht door Dux » 06 okt 2013, 15:15

arno schreef:Ga uit van het gegeven dat je met 1 dobbelsteen minimaal 1 en maximaal 6 kunt gooien.
Ik heb geen idee wat ik hieruit moet halen. :?

arno
Vergevorderde
Vergevorderde
Berichten: 1923
Lid geworden op: 25 dec 2008, 16:28
Locatie: Beek en Donk, Noord-Brabant

Re: Risk

Bericht door arno » 06 okt 2013, 17:24

Dux schreef:
arno schreef:Ga uit van het gegeven dat je met 1 dobbelsteen minimaal 1 en maximaal 6 kunt gooien.
Ik heb geen idee wat ik hieruit moet halen. :?
Wat is het totaal aantal mogelijkheden als je met 1 dobbelsteen gooit, en wat is het totaal aantal mogelijkheden bij n dobbelstenen?
"Mathematics is a gigantic intellectual construction, very difficult, if not impossible, to view in its entirety." Armand Borel

Dux
Vast lid
Vast lid
Berichten: 74
Lid geworden op: 13 jul 2012, 12:38

Re: Risk

Bericht door Dux » 06 okt 2013, 19:00

Bij n dobbelstenen kun je van n tot 6n gooien, wat 6n-n+1 = 5n+1 mogelijkheden zijn.

David
Moderator
Moderator
Berichten: 4927
Lid geworden op: 14 mei 2009, 16:22

Re: Risk

Bericht door David » 07 okt 2013, 10:40

Ik zou met kansen op een bepaald aantal dobbelstenen op een bepaald aantal ogen, in plaats van aantal mogelijkheden omdat het aantal dobbelstenen verschillend kan zijn. Maar bij Risk kijk je toch naar dobbelstenen op zich in plaats van de som?
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)

Dux
Vast lid
Vast lid
Berichten: 74
Lid geworden op: 13 jul 2012, 12:38

Re: Risk

Bericht door Dux » 07 okt 2013, 15:18

David schreef:Ik zou met kansen op een bepaald aantal dobbelstenen op een bepaald aantal ogen, in plaats van aantal mogelijkheden omdat het aantal dobbelstenen verschillend kan zijn. Maar bij Risk kijk je toch naar dobbelstenen op zich in plaats van de som?
Ik baseer mijn vraag niet op Risk, maar een simpeler spel gebaseerd op Risk (zoiets als http://www.spelle.nl/Denk/2283/Risken_1.html )

David
Moderator
Moderator
Berichten: 4927
Lid geworden op: 14 mei 2009, 16:22

Re: Risk

Bericht door David » 08 okt 2013, 10:26

Breek het probleem in verschillende problemen.
Bereken de kans dat gegeven een aantal ogen van A, Qa groter is dan het aantal ogen van B, Qb, voor alle mogelijkheden voor Qa. Kies bijvoorbeeld: a ( = aantal dobbelstenen A) = 3, b (= aantal dobbelstenen B) = 2. (of het probleem dat Qb lager is dan Qa voor alle mogelijkheden voor alle mogelikheden voor Qa).
Wat als Qa = Qb?
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)

Dux
Vast lid
Vast lid
Berichten: 74
Lid geworden op: 13 jul 2012, 12:38

Re: Risk

Bericht door Dux » 10 okt 2013, 20:16

David schreef:Bereken de kans dat gegeven een aantal ogen van A, Qa groter is dan het aantal ogen van B, Qb, voor alle mogelijkheden voor Qa. Kies bijvoorbeeld: a ( = aantal dobbelstenen A) = 3, b (= aantal dobbelstenen B) = 2. (of het probleem dat Qb lager is dan Qa voor alle mogelijkheden voor alle mogelikheden voor Qa).
Wat als Qa = Qb?


Bedoel je dit?

Als Qa = Qb wint in het spel de verdediger; aangezien alleen aanvallen jouw keuze is, wil ik Qa>Qb berekenen ipv Qa>=Qb.

David
Moderator
Moderator
Berichten: 4927
Lid geworden op: 14 mei 2009, 16:22

Re: Risk

Bericht door David » 13 okt 2013, 12:52

Ja, ziet er goed uit. Dit is voor de situatie dat persoon A persoon B aanvalt Je zei je zou een programma kunnen schrijven. Wat voor programma zou je schrijven? Je kan op een formule komen maar uiteindelijk wil je misschien een tabel maken voor de kansen. Om die te maken kan je een programma schrijven.
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)

Dux
Vast lid
Vast lid
Berichten: 74
Lid geworden op: 13 jul 2012, 12:38

Re: Risk

Bericht door Dux » 13 okt 2013, 14:20

Ik heb besloten de formule maar op te geven en een programma te schrijven. Ik heb een beetje ervaring met Project Euler (in Python). Ik zal de resultaten hier posten.

David
Moderator
Moderator
Berichten: 4927
Lid geworden op: 14 mei 2009, 16:22

Re: Risk

Bericht door David » 13 okt 2013, 14:23

Hoezo geef je de formule op? Fijn als je de resultaten wilt tonen. Wat voor programma wordt het? Veel proberen?
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)

David
Moderator
Moderator
Berichten: 4927
Lid geworden op: 14 mei 2009, 16:22

Re: Risk

Bericht door David » 13 okt 2013, 15:28

Code: Selecteer alles

 a             b            p(Sa > Sb) 
______________________________________________________
 1             1            15/6^2 = 0,416666666666667
 1             2            20/6^3 = 9,25925925925926E-02
 1             3            15/6^4 = 1,15740740740741E-02
 1             4            6/6^5 = 7,71604938271605E-04
 1             5            1/6^6 = 2,14334705075446E-05
 1             6            0/6^7 = 0 
 2             1            181/6^3 = 0,837962962962963
 2             2            575/6^4 = 0,443672839506173
 2             3            1182/6^5 = 0,152006172839506
 2             4            1674/6^6 = 3,58796296296296E-02
 2             5            1709/6^7 = 6,10496684956561E-03
 2             6            1287/6^8 = 7,66246570644719E-04
 3             1            1261/6^4 = 0,972993827160494
 3             2            6054/6^5 = 0,778549382716049
 3             3            21162/6^6 = 0,453575102880658
 3             4            53664/6^7 = 0,191700960219479
 3             5            101974/6^8 = 6,07126867093431E-02
 3             6            149942/6^9 = 1,48785992353808E-02
 4             1            7755/6^5 = 0,997299382716049
 4             2            43821/6^6 = 0,939236111111111
 4             3            207945/6^7 = 0,742830504115226
 4             4            771831/6^8 = 0,459528249314129
 4             5            2221551/6^9 = 0,220442351108825
 4             6            5044260/6^10 = 8,34228379185084E-02
 5             1            46649/6^6 = 0,999849965706447
 5             2            276560/6^7 = 0,987940100594422
 5             3            1527354/6^8 = 0,90934713648834
 5             4            7236576/6^9 = 0,718078417924097
 5             5            28035360/6^10 = 0,463653597012651
 5             6            87959820/6^11 = 0,24244910079976
 6             1            279935/6^7 = 0,999996427754915
 6             2            1676621/6^8 = 0,998216854328608
 6             3            9828775/6^9 = 0,975299810591627
 6             4            53449286/6^10 = 0,88395346846475
 6             5            253818766/6^11 = 0,69961638828734
 6             6            1015970930/6^12 = 0,46673060195211
Dit is wat ik uitkrijg, voor een paar waarden van a en b. Wat krijg jij?
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)

Dux
Vast lid
Vast lid
Berichten: 74
Lid geworden op: 13 jul 2012, 12:38

Re: Risk

Bericht door Dux » 13 okt 2013, 18:27

Mijn uitkomsten zijn dezelfde:

Code: Selecteer alles

a  b  p(Sa>Sb)
----------------------------
1  1  0.4166666666666667
1  2  0.09259259259259259
1  3  0.011574074074074073
1  4  0.0007716049382716048
1  5  2.1433470507544583e-05
1  6  0.0
2  1  0.837962962962963
2  2  0.4436728395061728
2  3  0.15200617283950615
2  4  0.03587962962962963
2  5  0.006104966849565615
2  6  0.0007662465706447187
3  1  0.9729938271604938
3  2  0.7785493827160493
3  3  0.4535751028806584
3  4  0.19170096021947874
3  5  0.060712686709343086
3  6  0.014878599235380787
4  1  0.9972993827160495
4  2  0.9392361111111109
4  3  0.7428305041152261
4  4  0.45952824931412894
4  5  0.22044235110882487
4  6  0.08342283791850835
5  1  0.9998499657064469
5  2  0.9879401005944214
5  3  0.90934713648834
5  4  0.7180784179240969
5  5  0.46365359701265046
5  6  0.24244910079975954
6  1  0.9999964277549153
6  2  0.9982168543286084
6  3  0.9752998105916272
6  4  0.8839534684647495
6  5  0.6996163882873404
6  6  0.46673060195210997
Mijn programma bestaat uit twee delen.
Dit deel maakt voor alle aantallen dobbelstenen tot en met d een lijst met frequenties (= mogelijkheden) voor een aantal ogen:

Code: Selecteer alles

def frequenties(d):
    f=[0]
    for n in range(1,d+1):
        Qn=[0] * (6*n+1)
        ds=[1] * n
        while sum(ds) < 6*n:
            Qn[sum(ds)] += 1
            ds[-1]+=1
            while 1:
                try:
                    i=ds.index(7)
                except ValueError:
                    i=-1
                if i==-1:
                    break
                else:
                    ds[i]=1
                    ds[i-1]+=1
        Qn[sum(ds)]+=1
        f.append(Qn)
    return f
Het volgende deel gaat alle a's en b's door en dan alle mogelijkheden van a (dan voert hij eigenlijk die som uit die ik eerder postte), hij telt de kansen op en laat ze op beeld zien:

Code: Selecteer alles

for a in range(1,d+1):
    for b in range(1,d+1):
        p=0
        for i in range(0,len(f[a])):
            winst=0
            for j in range(0,i):
                if j+1>len(f[b]):
                    break
                winst+=f[b][j]
            winkans=winst/sum(f[b])
            p+=f[a][i]/sum(f[a])*winkans
        print(a,b,p)
Ik zag aan jouw post dat het meervouden zijn van 1/(6^(a+b)), wat eigenlijk wel logisch is.
David schreef:Hoezo geef je de formule op?
Omdat de formule waarschijnlijk uiteindelijk hetzelfde zou doen als het programma en omdat het programma een exact antwoord kan geven ,die meervouden van 1/(6^(a+b)), is hij ook niet nodig voor een exact antwoord.

PS: Ik sta open voor opmerkingen op mijn programmeren :wink: , ik heb het mezelf aangeleerd.

David
Moderator
Moderator
Berichten: 4927
Lid geworden op: 14 mei 2009, 16:22

Re: Risk

Bericht door David » 13 okt 2013, 19:37

Ok, dat heb je snel gedaan!

Ik heb deze formules gebruikt:

Gegeven n dobbelstenen. Dan de kans dat je minder dan s ogen gooit is


De kans dat je precies s ogen gooit is


Hier is mijn code, voor Excel VBA

bepaal voor a = 1 t/m 6 en b = 1 t/m 6 de kansen

Code: Selecteer alles

Sub result()
Dim a As Long, b As Long
For a = 1 To 6
    For b = 1 To 6
        dux a, b
    Next
Next
End Sub
bereken het aantal mogelijkheden om met a dobbelstenen meer ogen te gooien dan met b dobbelstenen.

Code: Selecteer alles

Public Function dux(a As Long, b As Long)
Dim i As Long, s As Long
For i = min(a, b) To 6 * max(a, b)
    s = s + diceeq(a, i) * diceless(b, i - 1)
    'Debug.Print i, s, diceeq(a, i), diceless(b, i - 1)
Next
'print a, b, de exacte vorm en de benaderde vorm van de kans
Debug.Print a, b, s & "/6^" & (a + b) & " = " & s / 6 ^ (a + b)
End Function
aantal mogelijkheden om met n dobbelstenen een aantal ogen te gooien <= s.

Code: Selecteer alles

Function diceless(n As Long, s As Long) As Long
Dim i As Long
For i = 0 To (s - 1) \ 6
    diceless = diceless + binomial(n, i) * binomial(s - 6 * i, n) * (-1) ^ i
Next
End Function
aantal mogelijkheden om met n dobbelstenen een aantal ogen te gooien gelijk aan s.

Code: Selecteer alles

Function diceeq(n As Long, s As Long) As Long
Dim i As Long
For i = 0 To (s - 1) \ 6
    diceeq = diceeq + binomial(n, i) * binomial(s - 6 * i - 1, n - 1) * (-1) ^ i
Next
End Function
bereken (n choose k)

Code: Selecteer alles

Function binomial(n As Long, k As Long) As Long
If k = 0 Then
    binomial = 1
Else
    binomial = n / k * binomial(n - 1, k - 1)
End If
End Function
functies voor minimum en maximum van a en b.

Code: Selecteer alles

Public Function min(a As Long, b As Long) As Long
If a < b Then min = a Else min = b
End Function
Public Function max(a As Long, b As Long) As Long
If a > b Then max = a Else max = b
End Function
Maar goed dat je het zelf hebt geleerd :idea: Ik heb wat C gehad maar vooral VBA. Ik heb een idee van wat de code doet, maar een aantal commando's, try, except, snap ik niet zo.
Stap 1 van het oplossen van een probleem is te erkennen dat je een probleem hebt.
(Raffiek Torreman)

Plaats reactie