Javascript獲取不重複的隨機數值
/**
* 獲取不重複隨機數
* @param integer start 隨機數最小值
* @param integer end 隨機數最大值
* @param integer size 隨機數獲取數量 最小為1,默認1
* @return integer|array 如 1或者[2,4,7,9]
*/
function randUnique(start, end, size){
// 全部隨機數值
var allNums = new Array;
// 判斷獲取隨機數個數
size = size ? (size > end - start ? end - start : size) : 1;
// 生成隨機數值區間數組
for (var i = start, k = 0; i <= end; i++, k++) {
allNums[k] = i;
}
// 打撒數組排序
allNums.sort(function(){ return 0.5 - Math.random(); });
// 獲取數組從第一個開始到指定個數的下標區間
return allNums.slice(0, size);
}
調試了好幾次,綜合穀歌結果,發現還是這樣效率最高了,最後返回數組測試了用 slice 和 for 循環獲取 randUnique(0,1000000,1000000) 百萬級 測試,還是用 slice 好點兒
最後更新:2017-04-03 12:54:57