JSFiddle - React, Tailwind, and code Playground
CSS
body {
white-space: pre-wrap;
}
JavaScript
function makeRandomRange(x) {
var range = new Array(x),
pointer = x;
return function getRandom() {
pointer = (pointer-1+x) % x;
var random = Math.floor(Math.random() * pointer);
var num = (random in range) ? range[random] : random;
range[random] = (pointer in range) ? range[pointer] : pointer;
return range[pointer] = num;
};
}
var generate = makeRandomRange(20);
var obj = {};
var nums = [];
for (var i = 0; i < 100000; i++) {
var x = generate();
nums.push(x);
obj[x] = (obj[x] || 0) + 1;
}
document.body.firstChild.data =
"distribution: "+JSON.stringify(obj, null, 4)+"\n\n" + nums.join("\n");