【ASP】在特定的范围内产生N个不同的随机数

ASP产生一个随机数不难。就两条特定语句:

<%
Randomize 
x=int(20*rnd+1)
%>

以上的两条语句。表示从1~20这个范围内产生随机数,而且这些随机数都是整数。

那么,要在1~20连续产生20个不同的随机数。也就是随机排列1~20。该怎么解决呢?

首先,我们须要数组来存储这20个不同的随机数。

ASP能够用例如以下的两种方式定义一个容量为20数组:

<%
dim number(20)
%>

<%
dim number
redim number(20)
%>

当中。第二组后接number= Session("xx") 能接住前一页面通过Session("xx")=number。传递过来的number数组。

要在1~20连续产生20个不同的随机数,也就是随机排列1~20的基本思想是:

首先在1~20产生一个随机数X。然后对这个之前产生的数据进行遍历。推断是否存在有数等于这个新产生的随机数的,假设有,立flag,

然后对之前的数据遍历完成之后,推断flag是否立起来。

假设是。就不加入这个随机数进数组。又一次产生随机数并收起flag,再又一次遍历已有的数据中是否已有这个随机数,

假设否。就加入,直到20个数据产生完成。

最后输出这个20个数据

详细实现的代码例如以下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
'禁止缓存'  
Response.CacheControl="no-cache"  
Response.Expires=-1  
Response.Charset="UTF-8"    '配合第一行设定网页编码' 

'核心代码'
dim RandomArray(20)	'定义一个长20的一位数组'
i=0
do while i<UBound(RandomArray,1)
	Randomize 
		x=int(20*rnd+1)
	flag=true
	For j=0 To UBound(RandomArray,1)
		if RandomArray(j)=x	then
			flag=false
			exit for
		end if
	next
	if flag=true then
		RandomArray(i)=x
		i=i+1
	end if
loop

'输出数组'
For i=0 To UBound(RandomArray,1)
	Response.Write RandomArray(i)&","
Next

%>

执行结果例如以下:


能够发现,每次刷新这个页面,此20个数据都是不同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值