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 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"; #."_'=#.'_"+1" copies(';END', k)
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*/
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=&nbsp; when using the default inputs:}}
{{out|output|text=&nbsp; when using the default inputs:}}