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