$GAMES = 1000;
if (array_key_exists('numtrials', $_POST) && is_numeric($_POST['numtrials'])) {
$GAMES = max(1, $_POST['numtrials']);
$GAMES = min(10000, $GAMES);
}
$cr1 = 0;
if (array_key_exists('cr1', $_POST) && is_numeric($_POST['cr1'])) {
$cr1 = max(0, $_POST['cr1']);
$cr1 = min(5, $cr1);
}
$cr2 = 1;
if (array_key_exists('cr2', $_POST) && is_numeric($_POST['cr2'])) {
$cr2 = max(0, $_POST['cr2']);
$cr2 = min(5, $cr2);
}
mt_srand((float)microtime()*1000000);
function highRoll($sides, $num) {
$maxRoll = 0;
// for each die
for ($i = 0; $i < $num; $i++) {
// roll and see if it's higher
$maxRoll = max($maxRoll, mt_rand(1,$sides));
}
return $maxRoll;
}
$cr1win = 0;
$cr2win = 0;
$winDueToTie = 0;
for ($g = 0; $g < $GAMES; $g++) {
do {
if ($cr1 > $cr2) {
$cr1_roll = highRoll(20, 2);
$cr2_roll = highRoll(20, 1);
}
elseif ($cr1 < $cr2) {
$cr1_roll = highRoll(20, 1);
$cr2_roll = highRoll(20, 2);
}
else {
$cr1_roll = highRoll(20, 1);
$cr2_roll = highRoll(20, 1);
}
} while ($cr1_roll == $cr2_roll && $cr1 == $cr2);
if ($cr1_roll > $cr2_roll) {
$cr1win++;
}
elseif ($cr1_roll < $cr2_roll) {
$cr2win++;
}
elseif ($cr1 < $cr2) {
$cr2win++;
$winDueToTie++;
}
elseif ($cr1 > $cr2) {
$cr1win++;
$winDueToTie++;
}
else {
echo "LOGIC ERROR!
";
}
} // for each game
?>
A DDM Initiative Simluation with trials
Team 1 won initiative times.
Team 2 won initiative times.
Of those wins, wins were due to a tie on the roll and the
higher commander winning the tie.