@extra-array/shuffle.min
Version:
Rearranges values in arbitrary order.
21 lines (19 loc) • 485 B
JavaScript
const mulberry32 = require('./_mulberry32');
/**
* Rearranges values in arbitrary order.
* @param {Array} x an array (updated)
* @param {number?} n random seed 0->1
* @returns {Array} x
*/
function shuffle$(x, n=Math.random()) {
var rnd = mulberry32(Math.floor(n * 2**31));
for(var i=0, I=x.length; i<I; i++) {
var m = Math.floor(rnd() * I);
var n = Math.floor(rnd() * I);
var t = x[m];
x[m] = x[n];
x[n] = t;
}
return x;
}
module.exports = shuffle$;