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)