js 打乱数组

半随机打乱法

var arr = ["a", "b", "c", "d", "e","f","g"];
arr.sort(function () {
     return 0.5 - Math.random()
})
var newArr = arr.join();
console.log(newArr);

来看看运行结果

出现上面的概率有多大呢,再多刷几次

 

发现并不是完全随机,因为0.5 - Math.random()这个运算的结果要么是大于0,要么是小于0,这样要么交换位置,要么不交换位置.

完全随机打乱法

function shuffle(array) {
    if (!Array.isArray(array)) {
       return array;
    }
    for (var i = array.length - 1; i > 0; i--) {
       var j = Math.floor(Math.random() * (i + 1));
     [array[i], array[j]] = [array[j], array[i]]
    }
    return array;
  }
  var arr = ["a", "b", "c", "d", "e","f","g"];
  console.log(shuffle(arr));

 运行结果:

 Math.floor(Math.random() * (i + 1));随机生成数字进行交换.

posted @ 2017-04-19 22:40  玄奘Plus  阅读(328)  评论(0编辑  收藏  举报