JSFiddle - React, Tailwind, and code Playground
by jfriend00
HTML
Min Value: <input id="minRange" type="text" value="1"><br>
Max Value: <input id="maxRange" type="text" value="37"><br>
<button id="go" onclick="makeRandoms()">Generate Six Randoms</button><br><br><br>
<div id="output"></div>
JavaScript
function randCalc(maxVal, minVal, numRandoms) {
var max = Math.max(maxVal, minVal);
var min = Math.min(maxVal, minVal);
// create a set to keep track of numbers we've already used so
// we don't repeat any random numbers
var set = {};
var randoms = [];
var rand;
// prevent infinite loop if not given enough range
if (max - min < numRandoms) {
return randoms;
}
while (randoms.length < numRandoms) {
rand = Math.floor((Math.random() * (max - min + 1) + min));
// if we haven't already used this random number
// then put it in our output array and add it to the set
if (!(rand in set)) {
randoms.push(rand);
set[rand] = true;
}
}
return randoms;
}
function makeRandoms() {
// retrieve DOM values and convert them to numbers
var maxVal = document.getElementById("maxRange").value;
var minVal = document.getElementById("minRange").value;
if (!maxVal || !minVal) {
alert("You must specify both a minimum and maximum value");
return;
}
// convert both to numbers
maxVal = parseInt(maxVal, 10);
minVal = parseInt(minVal, 10);
if (minVal < 1) {
alert("The min value cannot be lower then 1");
return;
}
if (maxVal > 37) {
alert("The higher value cannot be higher then 37");
return;
}
if (maxVal - minVal < 6) {
alert("The difference cannot be lower then 6");
return;
}
var randoms = randCalc(maxVal, minVal, 6);
// output the randoms array here
document.getElementById("output").innerHTML = JSON.stringify(randoms);
}