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] 之间的数字;

    1. function getRandomNumber(min, max) {
    2. // 返回一个 [min, max] 之间的一个整数
    3. return Math.floor(Math.random() * (max - min + 1) + min);
    4. }
    5. export function shuffle(arr) {
    6. let _arr = arr.slice();
    7. for(let i = 0; i < _arr.length; i ++) {
    8. const j = getRandomNumber(0, i);
    9. /* 经典交换
    10. let temp = _arr[i];
    11. _arr[i] = _arr[j];
    12. _arr[j] = temp;
    13. */
    14. // ES3 Array.prototype.splice
    15. //_arr[i] = _arr.splice(j, 1, _arr[i])[0];
    16. // ES6 解构赋值
    17. [_arr[i], _arr[j]] = [_arr[j], _arr[i]];
    18. }
    19. return _arr;
    20. }