asp产生非重复随机数的替代思想
第一次看到有人做一个考试系统两天,这只是一个简单的返回随机函数RND。在实际应用中,需要从数据库中随机抽取n个通道问题。
下面的代码是基于VBS;
通常的写作与此相似。
不产生重复的随机数
功能rndarray(我开始,朋友,和)
昏暗的arrayid(),I,J,blnre、温度、内、eloop
ReDim arrayid(sum-1)
我= 0
内= 0
eloop = 0
blnre = false
随机化
do当我<和
温度= int(RND *(借我+ 1)+我)
如果我= 0然后
Arrayid(0)=温度
i = i + 1
内=内+ 1
其他的
J = 0到i-1
如果arrayid(j)=温度然后
blnre =真
内=内+ 1
出口for'sentence是防止超循环的重要
其他的
内=内+ 1
最后如果
下一个
如果blnre = FALSE然后
Arrayid(我)=温度
i = i + 1
其他的
blnre = false
最后如果
最后如果
eloop = eloop +内
内= 0
环
rndarray =加入(arrayid)循环次数:eloop
端功能
response.write rndarray(1,10,5)的调用过程
诗的内、eloop是为了计算周期数。
以上,大多数人都是这样写的,生成一个随机数,然后与上一代比较,确定是否可用;
但这不是人工智能,也不是一种有效的方式,为什么不使用两个数组呢
1一个数组,存储字符串或数字,商店2的随机数生成一个数组;当一个下标x每次随机生成的临时中间变量,分为2阵,然后从阵列1,去掉下标x号分配给中间变量temp;这样每生成一个随机的1号,从数组中删除这个号码,一个数字的下一代不会重复,产生随机数的原理和方法,从实际的数组中提取1。
方法二
功能rndstr(我开始,我,Isum)
朦胧的我,J,vntarray()
ReDim vntarray(我的朋友)
J =我
我= 0我的朋友
Vntarray(我)= J
j = j + 1
下一个
昏暗的vntarray2(x,y),温度,
ReDim vntarray2(isum-1)
Y =借我1
x = 0
温度= vntarray
做x<ISUM
暗淡
随机化
vntarray2(x)=温度(int(RND×Y))
a vntarray2(x)
温度=分裂(TRIM(取代(Chr(CHR(32)加入(临时)CHR(32),一个))))))
x=1
Y = Y-1
环
rndstr =加入(vntarray2)
端功能
response.write rndstr(1,5,2)
那么,这样容易吗
扩大,如果一个随机字符串是如何产生的,包含字母数字的函数原型(NUM)仅用于当阵列1分配。
假设,你需要为手机奖做一个页面程序。
首先,将值赋给数组1,它可以是130…~ 139…循环任务。当然,在实践中使用时,从数据库分配现有的赋值,并将其重新提取到数组2中。
最后,多一点。
温度=取代(加入(array2),CHR(32),)
电话=左(温度,6)***右(温度,2)
得到的结果像137648××58,哈哈
太多了,它死了。