Rerolling Hitdice
by XarX
HTML
<pre id=painted></pre>
JavaScript
var _painted = 0, $painted = document.getElementById('painted');
var runs = 25000,
current_hitpoints = 0,
next_hitpoints = 0,
con_min = 0,
con_max = 7,
highest_hitpoints = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]],
end_hitpoints = [[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]];
//for (i=1;i<=100;i++) $painted.textContent+= rollHitDie(1,6) + "\n";
for (run=1;run<=runs;run++) {
for (hitdie=2;hitdie<=12;hitdie++) {
if (hitdie == 4 || hitdie == 6 || hitdie == 8 || hitdie == 10 || hitdie == 12) {
for (con=con_min;con<=con_max;con++) {
current_hitpoints = 0;
for (level=1;level<=20;level++) {
next_hitpoints = hitdie + level*con;
for (hitdice=1;hitdice<level;hitdice++) {
next_hitpoints+= rollHitDie(1,hitdie);
}
if (next_hitpoints > current_hitpoints) {
current_hitpoints = next_hitpoints;
//$painted.textContent+= "Current HP changed to " + current_hitpoints + " at level " + level + "\n";
}
}
end_hitpoints[hitdie][con]+=current_hitpoints/runs;
//$painted.textContent+= "Saved HP are " + end_hitpoints[hitdie][con] + " from ending HP " + current_hitpoints + " and " + runs + " runs\n";
if (current_hitpoints > highest_hitpoints[hitdie][con]) highest_hitpoints[hitdie][con] = current_hitpoints;
}
}
}
}
for (hitdie=2;hitdie<=12;hitdie++) {
if (hitdie == 4 || hitdie == 6 || hitdie == 8 || hitdie == 10 || hitdie == 12) {
$painted.textContent+= "Hitdie: " + hitdie + "\n";
for (con=con_min;con<=con_max;con++) {
$painted.textContent+=...