Math.random()
会返回一个 [0, 1)
之间的数字;Math.random() * (max - min)
会得到 [0, max - min)
之间的数字;Math.random() * (max - min) + min
会得到 [min, max)
之间的数字;Math.random() * (max - min + 1) + min
会得到 [min, max + 1)
之间的数字;Math.floor(Math.ramdom() * (max - min + 1) + min)
向下取整会得到 [min, max]
之间的数字;
function getRandomNumber(min, max) {
// 返回一个 [min, max] 之间的一个整数
return Math.floor(Math.random() * (max - min + 1) + min);
}
export function shuffle(arr) {
let _arr = arr.slice();
for(let i = 0; i < _arr.length; i ++) {
const j = getRandomNumber(0, i);
/* 经典交换
let temp = _arr[i];
_arr[i] = _arr[j];
_arr[j] = temp;
*/
// ES3 Array.prototype.splice
//_arr[i] = _arr.splice(j, 1, _arr[i])[0];
// ES6 解构赋值
[_arr[i], _arr[j]] = [_arr[j], _arr[i]];
}
return _arr;
}