Dice game probabilities: Difference between revisions
Content added Content deleted
m (→optimized: added whitespace.) |
m (→optimized: changed whitespace.) |
||
Line 1,717: | Line 1,717: | ||
game: parse arg w.1 s.1, w.2 s.2 /*1st player(dice sides), 2nd player···*/ |
game: parse arg w.1 s.1, w.2 s.2 /*1st player(dice sides), 2nd player···*/ |
||
p.= 0 |
p.= 0 |
||
do j=1 for 2; @@.j=prob(w.j, s.j) |
do j=1 for 2; @@.j= prob(w.j, s.j) |
||
do k=w.j to w.j*s.j; parse var @@.j p.j.k @@.j; end /*k*/ |
do k=w.j to w.j*s.j; parse var @@.j p.j.k @@.j; end /*k*/ |
||
end /*j*/ |
end /*j*/ |
||
low.= 0 |
low.= 0 |
||
do j=w.1 to w.1*s.1 |
do j=w.1 to w.1*s.1 |
||
do k=0 for j; low.j=low.j + p.2.k; |
do k=0 for j; low.j= low.j + p.2.k; end /*k*/ |
||
end /*j*/ |
end /*j*/ |
||
say ' Player 1 has ' w.1 " dice with " s.1 ' sides each.' |
say ' Player 1 has ' w.1 " dice with " s.1 ' sides each.' |
||
say ' Player 2 has ' w.2 " dice with " s.2 ' sides each.' |
say ' Player 2 has ' w.2 " dice with " s.2 ' sides each.' |
||
winP= 0 |
winP= 0 |
||
do j=w.1 to w.1*s.1; winP=winP + p.1.j * low.j |
do j=w.1 to w.1*s.1; winP= winP + p.1.j * low.j |
||
end /*j*/ |
end /*j*/ |
||
say 'The probability for first player to win is ' format(winP*100, , 30) "%." |
say 'The probability for first player to win is ' format(winP*100, , 30) "%." |
||
Line 1,733: | Line 1,733: | ||
return /*display 30 decimal digits────┘ */ |
return /*display 30 decimal digits────┘ */ |
||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
||
prob: procedure; parse arg n,s,,@ $; |
prob: procedure; parse arg n,s,,@ $; #.= 0; pow= s**n |
||
do j=1 for n; @= @'DO _'j"=1 |
do j=1 for n; @= @'DO _'j"=1 FOR" s';'; end /*j*/ |
||
@= @'_='; do k=1 for n-1; @= @"_"k'+' ; end /*k*/ |
@= @'_='; do k=1 for n-1; @= @"_"k'+' ; end /*k*/ |
||
interpret @'_'n"; |
interpret @'_'n";#."_'=#.'_"+1"copies(';END', k) |
||
ns= n*s; do j=0 to ns; p.j= #.j / pow; end /*j*/ |
ns= n*s; do j=0 to ns; p.j= #.j / pow; end /*j*/ |
||
do k=n to ns; $= $ p.k; end /*k*/ |
do k=n to ns; $= $ p.k; end /*k*/ |