文章分类

标签导航

ASP不重复取随机数问题

发布时间:2012-09-09 09:40:59 访问次数:3952 【关闭此页】

  网友问到一个ASP取随机数的问题,要求是从1到100,每次取出一个数。但是这100次取值的结果均不能重复。如果一轮取完,那另一轮也要如此。分析了一下,如果随机取一个1到100之间的数字是非常容易的,使用rnd()函数即可,但是如果不能重复,就需要记录下每次取到的值为下一次取值做比较。这其中就涉及到一个效率问题,比如已经取到99个值,那么最后一个值可能要取若干次才会匹配上,效率非常低。换个思路,假如把这100个数字先打乱,然后每次顺序取出一个值来,效率就会非常高了,并且值不会重复。

乱序代码如下:

'min 最小数
'max 最大数
'n 取值个数
'输出结果形如:51,23,71,22……
function getRN(min,max,n)
	dim i,str,arr,tmp
	for i=min to max
		str=str&"|"&i
	next
	str=str&"|"
	randomize
	for i=1 to n
		if str="|" then exit for
		arr=split(str,"|")
		tmp=arr(int((max-min+2-i)*rnd()+1))
		getRN=getRN&","&tmp
		str=replace(str,"|"&tmp&"|","|")
	next
	getRN=mid(getRN,2)
end function
本文标签:网站建设ASP
首 页|关于我们|网站建设|域名服务|虚拟主机|百度优化|成功案例|资讯中心|联系方式