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
\(P(Qa < s) = P(Qa + 1 \le s) = \sum_{i=0}^{\lfloor \frac{s-1}{6} \rfloor} {n \choose i} \cdot {s - 6 * i \choose n} \cdot (-1)^i\)
De kans dat je precies s ogen gooit is
\(p(Qa = s) = \sum_{i=0}^{\lfloor \frac{s-1}{6} \rfloor} {n \choose i} \cdot {s - 6 * i - 1 \choose n - 1} \cdot (-1)^i\)
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

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.