51 lines
1,021 B
Text
51 lines
1,021 B
Text
INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit
|
|
|
|
BYTE FUNC Roll(BYTE sides,dices)
|
|
BYTE i,sum
|
|
|
|
sum=0
|
|
FOR i=1 TO dices
|
|
DO
|
|
sum==+Rand(sides)+1
|
|
OD
|
|
RETURN (sum)
|
|
|
|
PROC Test(BYTE sides1,dices1,sides2,dices2)
|
|
INT i,count=[10000],sum1,sum2,wins1,wins2,draws
|
|
REAL r1,r2,p
|
|
|
|
wins1=0 wins2=0 draws=0
|
|
FOR i=1 TO count
|
|
DO
|
|
sum1=Roll(sides1,dices1)
|
|
sum2=Roll(sides2,dices2)
|
|
IF sum1>sum2 THEN
|
|
wins1==+1
|
|
ELSEIF sum1<sum2 THEN
|
|
wins2==+1
|
|
ELSE
|
|
draws==+1
|
|
FI
|
|
OD
|
|
|
|
IntToReal(wins1,r1)
|
|
IntToReal(wins2,r2)
|
|
RealDiv(r2,r1,p)
|
|
|
|
PrintF("Tested %I times%E",count)
|
|
PrintF("Player 1 with %B dice of %B sides%E",dices1,sides1)
|
|
PrintF("Player 2 with %B dice of %B sides%E",dices2,sides2)
|
|
PrintF("Player 1 wins %I times%E",wins1)
|
|
PrintF("Player 2 wins %I times%E",wins2)
|
|
PrintF("Draw %I times%E",draws)
|
|
Print("Player 1 beating Player 2 probability:")
|
|
PrintRE(p)
|
|
PutE()
|
|
RETURN
|
|
|
|
PROC Main()
|
|
Put(125) PutE() ;clear the screen
|
|
|
|
Test(4,9,6,6)
|
|
Test(10,5,7,6)
|
|
RETURN
|