codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
MAX = 2000 # max calc an end DICE = [5, 10, 15, 20, 30] # dice CR = [6, 7, 8, 9, 10, 11].reverse # crit def hit_ratio(d, c, m) def less(d, c, m) h = [10, 1, 2, 3, 4, 5, 6, 7, 8, 9][m % 10] cr = (1.0 - (c - 1) / 10.0) ** ((m - 0.1) / 10).to_i hr = 1.0 - ((h <= c ? h : c) - 1) / 10.0 (1.0 - (cr * hr)) ** d end less(d, c, m+1) - less(d, c, m) end # Calc tbl = CR.map {|cr| DICE.map {|dice| (1..MAX).inject(0) {|t, m| t + m * hit_ratio(dice, cr, m) } } } # View print 'C/D', DICE.map {|e| sprintf("%8d", e) }.join, "\n" tbl.each_with_index {|e, i| print CR[i] > 10 ? 'non' : sprintf("%3d", CR[i]), e.map {|f| sprintf("%8.2f", f) }.join, "\n" }
Private
[
?
]
Run code
Submit