JSFiddle - React, Tailwind, and code Playground
by jeremenichelli
JavaScript
function shuffle(array) {
if (array.length < 2) {
return array
}
var copiedArray = array.slice()
var len = copiedArray.length
var shuffledArray = []
var randomPosition
while (len) {
randomPosition = Math.floor(Math.random() * len--)
shuffledArray.push(copiedArray.splice(randomPosition, 1)[0])
}
return shuffledArray
}
// individual test
var origArr = [ 'a', 'b', 'c'];
var randomArr = shuffle(origArr);
console.log(origArr, 'original array');
console.info(randomArr, 'shuffled array');
// distribution test
var NUMBER_OF_ITERATIONS = 100000
var results = {};
for (var i = 0; i < NUMBER_OF_ITERATIONS; 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]/NUMBER_OF_ITERATIONS * 100) + '%';
}
console.table(results)