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);

來看看運行結果dom

出現上面的機率有多大呢,再多刷幾回spa

 

發現並非徹底隨機,由於0.5 - Math.random()這個運算的結果要麼是大於0,要麼是小於0,這樣要麼交換位置,要麼不交換位置.code

徹底隨機打亂法

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));

 運行結果:blog

 Math.floor(Math.random() * (i + 1));隨機生成數字進行交換.io

相關文章
相關標籤/搜索