实际一般需要从数据库中随机提取N道题目。
以下代码都基于VBS;
通常的编写类似这样的
'产生不重复随机数
function rndarray(istart,iend,sum)
dim arrayid(),i,j,blnre,temp,iloop,eloop
redim arrayid(sum-1)
i=0
iloop=0
eloop=0
blnre=false
randomize
do while i<sum
temp=int(rnd*(iend-istart+1)+istart)
if i=0 then
arrayid(0)=temp
i=i+1
iloop=iloop+1
else
for j=0 to i-1
if arrayid(j)=temp then
blnre=true
iloop=iloop+1
exit for'这一句很重要,防止多余的循环
else
iloop=iloop+1
end if
next
if blnre=false then
arrayid(i)=temp
i=i+1
else
blnre=false
end if
end if
eloop=eloop+iloop
iloop=0
loop
rndarray=join(arrayid)&"循环次数:"&eloop
end function
response.write rndarray(1,10,5)&"<br>"'调用过程
PS。其中的iloop、eloop是为了计算循环次数而已。
以上,大多数人的都是用这种方法编写的,生成一个随机数,然后再和以前生成的做比较,判断是否可用;
但这不是一种AI的,或者说有效率的方法,为什么不用两个数组呢?
数组1,存放需要的字符串,或数字等,数组2存放生成的随机数;当每次随机生成中间变量temp的一个下标x,赋给数组2,然后从数组1中,去掉下标为x的数字,赋给中间变量temp;这样每生成一个随机数,就从数组1中拿掉这个数,下次再生成一个数就不会重复了,这种产生随机数的方法原理实际是从数组1中提取。
方法二
function rndstr(istart,iend,isum)
dim i,j,vntarray()
redim vntarray(iend-istart)
j=istart
for i=0 to iend-istart
vntarray(i)=j
j=j+1
next
dim vntarray2(),temp,x,y
redim vntarray2(isum-1)
y=iend-istart+1
x=0
temp=vntarray
do while x<isum
dim a
randomize
vntarray2(x)=temp(int(rnd*y))
a=" "&vntarray2(x)&" "
temp=split(trim(replace(chr(32)&join(temp)&chr(32),a," ")))
x=x+1
y=y-1
loop
rndstr=join(vntarray2)
end function
response.write rndstr(1,5,2)
这样,是不是更简单呢
展开一下,假如要生成随机字符串,包含字母数字时,仅需为数组1赋值时,用函数chr(num);
假设,需要做一个手机中奖的页面程序。
首先把值赋给数组1,可以130....~139....循环赋值,当然实际使用时从数据库中把已有的赋值,然后再随机提取赋给数组2;
最后,再修饰一下
temp=replace(join(array2),chr(32),"")
phone=left(temp,6)&"***"&right(temp,2)
得到类似137648***58的结果,呵呵
写那么多,累死了~~
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]