閱讀147 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go MySQL備份參數詳解
  下一篇:go CSS中RGBA的兼容方法以及透明度計算方法