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");