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 好点儿

时间: 2024-09-19 15:29:26

Javascript获取不重复的随机数值的相关文章

JavaScript学习笔记之数组随机排序_javascript技巧

推荐阅读:JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组的增.删.改.查 JavaScript中提供了sort()和reverse()方法对数组项重新排序.但很多时候这两个方法无法满足我们实际业务的需求,比如说扑克牌游戏中的随机洗牌. 在这篇文章一起来学习如何完成上面这个示例的效果,以及一些有关于数组随机排序的相关知识. 在网上查了一下有关于数组随机排序的相关资料,都看到了Math.random()的身影.打开浏览器控制器,输入: Math.random() 从图

javascript获取四位数字或者字母的随机数_javascript技巧

本章节通过代码实例介绍一下如何实现简单的四位随机数功能. 比较简单的一种实现方式就是从数字和字母中随机抽取四个不重复的字符. 代码实例如下: function only(ele,arr){ if(arr.length==0){ return true; } for(var j=0;j<arr.length;j++){ if(ele==arr[j]){ return false; }else{ return true; } } } var arr=[0,1,2,3,4,5,6,"a"

JavaScript判断数组重复内容的两种方法(推荐)_javascript技巧

前言 一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true 否则,返回 false. 思路 把数组变成字符串 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复 如何拿A字符串和B字符串进行对比,并且要求判断出B字符串中包含过个A字符串呢? 方法一 indexOf() 和 lastIndexOf() 对比法. 首先,我们构建代码: var arr = ["aa","bb",&q

Javascript获取数组中的最大值和最小值的方法汇总_javascript技巧

比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用自带的sort()函数,下面来介绍如下几种方法,代码如下: 方法一: //最小值 Array.prototype.min = function() { var min = this[0]; var len = this.length; for (var i = 1; i < len; i++){ if (this[i] < min){ min = this[i]; } } return min; } //最大值 Array

javascript删除数组重复元素的方法汇总_javascript技巧

本文实例讲述了javascript删除数组重复元素的方法.分享给大家供大家参考.具体分析如下: 这里分享一个前端面试高频题,主要实现javascript删除数组重复元素.希望对初学者有所帮助 //数组去重的方法 Array.prototype.unique=function(){ //集中声明变量 var oldArr=this, newArr=[oldArr[0]], len=oldArr.length, i=1; //过滤空数组 if(!len) return this; //过滤重复元素

Javascript获取随机数的实现方法_javascript技巧

Javascript获取随机数的实现方法 <script type="text/javascript"> function getRandom(n,m){ var n=Number(n); //强制转换成数字 var m=Number(m); if(isNaN(n)||isNaN(m)){ //判断是否为有效数字 ,其中一个不是有效数字就返回[0,1)之间的随机小数 return math.random(); } if(n>m){ //如果n>m则交换 var

javascript 数组去重复(在线去重工具)_javascript技巧

在线文本去重复工具 第一种方法: <textarea id="list" class="toolarea"> www.jb51.net www.baidu.com www.jb51.net shouce.jb51.net www.jb51.net tools.jb51.net www.baidu.com shouce.jb51.net tools.jb51.net www.jb51.net</textarea> <input type=

JavaScript获取两个数组交集的方法

  本文实例讲述了JavaScript获取两个数组交集的方法.分享给大家供大家参考.具体如下: 这里传入的数组必须是已经排过序的 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 /* finds the intersection of * two arrays in a simple fashion. * * PARAMS * a - first array, must alre

javascript 获取元素样式必杀技

  这篇文章主要介绍了javascript 获取元素样式必杀技,需要的朋友可以参考下 Javascript获取CSS属性值方法:getComputedStyle和currentStyle 1 .对于元素的内联CSS样式( hello ),可以直接使用element.style.color来直接获取css属性的值; 2. 但是对于外部定义的css样式使用这种方式就无法获取了,而且IE浏览器和其他标准浏览器(Firefox,Chrome,Opera,Safari)使用的方法不一样,IE浏览器使用el