JSFiddle - React, Tailwind, and code Playground

by jeremenichelli

JavaScript

// shuffle method by Jeremias Menichelli
shuffle = function (arr) {
    if (!!arr && arr.length > 1) {
        var newArr = [],
            origArr = arr.slice(),
            len = arr.length;

        while (len) {
            newArr.push(origArr.splice(parseInt(Math.random() * len--), 1)[0]);
        }
    } else {
        return arr ? arr.slice() : [];
    }
    
    return newArr;
}

// individual test
var origArr = [ 'a', 'b', 'c'];
var randomArr = shuffle(origArr);
console.log(origArr, 'original array');
console.info(randomArr, 'new shuffled array');

// test 1000 number of cases to check frequency distribution
var results = {};
for (var i = 0; i < 1000; i++) {
    var str = shuffle(['a', 'b', 'c']).join('_');
    if (typeof results[str] === 'undefined') {
        results[str] = 1;
    } else {
        ++results[str];
    }
}
for (var r in results) {
    results[r] = (results[r]/1000 * 100) + '%'; 
}

console.log(results)