JSFiddle - React, Tailwind, and code Playground
HTML
<span id="result"></span>
JavaScript
// Define subroutine to do one sample test.
function sample() {
// Fill an array with zeros so ++ works.
const results = new Array(6);
for (let i = 0; i < 6; i++) {
results[i] = 0;
}
// Roll 14 dice and bin results.
let die;
for (let i = 0; i < 14; i++) {
die = Math.floor(Math.random() * 6);
results[die]++;
}
if (results[0] === 7 ) {
// This does not count.
return false;
}
// Determine if the number of 1s plus any other adds to 7
for (let j = 1; j < 6; j++) {
if (results[0] + results[j] === 7 ) {
return true;
}
}
return false;
}
let trials = 0;
let successes = 0;
// Run some trials and then render the result.
function sampleMany() {
for (let j = 0; j < 10000; j++) {
trials++;
if (sample()) {
successes++;
}
}
const rate = (successes / trials).toFixed(6);
document.getElementById('result').innerHTML = `Rate ${rate} in ${trials} trials`;
}
// Need to use a callback to show progress.
for (let i = 0; i < 1000; i++) {
setTimeout(sampleMany,0);
}