用Javascript生成不重复的随机数

前几天在淘宝上买双色球,发现上面有个自动选号的功能,用着不错,做起来感觉也应该是比较简单的,于是就打算自己做一个。由于没有考虑周全,第一个程序虽然做出来了,却发现有很多bug,第一个是生成的结果有相同的数字,第二个生成的结果不能自动排列。
实际上它是一个很简单的问题,在一定的范围内,随机取出几个数字就行了,最重要的是取出结果之后,对相同数字的判断和排序。
首先是相同数字的判断,可以这样做,生成一个数组,每次从这个数组中随机拿出一个结果,然后删除数组的这个元素,去除的数字就不会重复;排序方面的话,可以把取出的数字组合成数组,然后利用Javascript数组的sort()进行排序,就OK了。

<script>
	function getrand1(min,max,size){
		var len=max-min+1;
		var arr=new Array();
		for (var i=0;i<len;i++){
			arr[i]=min+i;
		}
		var res=new Array();
		for (var i=0;i<size;i++){
			var randkey=Math.floor(Math.random()*arr.length);
			res[i]=arr[randkey];
			arr.splice(randkey,1)
		}

		function sortnum(a,b){
			return a - b;
		}
		return res.sort(sortnum);
	}
	document.write("红球 "+getrand1(1,33,6)+"<br/>");
	document.write("篮球 "+getrand1(1,16,1)+"<br/>");
</script>

发表回复