zoukankan      html  css  js  c++  java
  • 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 好点儿

  • 相关阅读:
    ArrayList和Vector的比较
    ExtJs与jQuery的比较
    列表类型的内建函数
    序列类型函数
    SQL函数
    HTTP状态码
    序列切片
    数值运算
    数值类型转换
    Python中is和==的区别
  • 原文地址:https://www.cnblogs.com/zhouzme/p/5758554.html
Copyright © 2011-2022 走看看