Dice game probabilities: Difference between revisions
Content added Content deleted
m (→optimized: changed wording in the REXX section header.) |
m (→optimized: added whitespace.) |
||
Line 1,716: | Line 1,716: | ||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
||
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; end /*k*/ |
do k=0 for j; low.j=low.j + p.2.k; end /*k*/ |
||
Line 1,726: | Line 1,726: | ||
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*/ |
||
Line 1,734: | Line 1,734: | ||
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────────*/ |
||
prob: procedure; parse arg n,s,,@ $; #.=0; pow=s**n |
prob: procedure; parse arg n,s,,@ $; #.=0; pow=s**n |
||
do j=1 for n; @= @'DO _'j"=1 for" s';'; end /*j*/ |
|||
@=@'_='; |
@= @'_='; do k=1 for n-1; @= @"_"k'+' ; end /*k*/ |
||
interpret @'_'n"; #."_'=#.'_"+1" copies(';END', k) |
interpret @'_'n"; #."_'= #.'_"+1" copies('; END', k) |
||
ns=n*s; |
ns= n*s; do j=0 to ns; p.j= #.j / pow; end /*j*/ |
||
do k=n to ns; $= $ p.k; end /*k*/ |
|||
return $ /* ◄──────────────── probability of 1st player to win, S─sided, N dice.*/</lang> |
return $ /* ◄──────────────── probability of 1st player to win, S─sided, N dice.*/</lang> |
||
{{out|output|text= when using the default inputs:}} |
{{out|output|text= when using the default inputs:}} |