-- Simulate rolling dice sub random( n ) m = mod(rand(),n) + 1; return m; endsub; sub formatnum( n, digits ) s = string(n); repeat for i from 1 to digits s = " " + s; endrepeat; len = length(s); r=""; repeat for i from (len - digits + 1) to len r=r+s[i]; endrepeat; return r; endsub; sub prints( file, s ) t = {}; t = t + s + ""; file.insert( t ); endsub -- Simulation Parameters NumDice = 3; sides=6; NumRolls = 800; Scale = 2; -- Initialize NumSlots = NumDice * sides; count={}; repeat for i from 1 to (NumSlots) count[i] = 0; endrepeat; -- Roll dice repeat for i from 1 to NumRolls sum = 0; repeat for j from 1 to NumDice sum = sum + random(sides); endrepeat; count[sum] = count[sum] + 1; endrepeat; -- Heading f=newfile(); s="Simulating rolling " + string(NumDice) + " dice"; s=s + " (" + string(sides) + " sides each" + ") "; s=s + string(NumRolls) + " times:"; prints( f, s ); -- Bar graph repeat for i from NumDice to NumSlots s = formatnum(i,3) + " (" + formatnum(count[i],5) + ") :"; repeat for j from 1 to (count[i]/Scale) s = s + "*"; endrepeat; prints( f, s ); endrepeat;