ASP生成随机数 ASP生成不重复随机数,asp生成随机数重复


ASP生成随机数:

复制代码 代码如下:

Randomize '纯随机,不重复
Response.write Int((999999999 * Rnd) + 111111111) '生成111111111到999999999之间随机数

ASP不重复随机数:

方法一: 已测

使用的时候需要注意里面的分割字符串的字符。

复制代码 代码如下:

<%
'生成的是一个不重复的数组
Function GetRnd(lowerNum,upperNum)
Dim unit,RndNum,Fun_X
unit = upperNum - lowerNum
Redim MyArray(unit)
For Fun_I=0 To unit
myArray(Fun_I)= lowerNum + Fun_I
Next
For Fun_I=0 To round(unit)
RndNum = getRndNumber(Fun_I,unit)
Fun_X = myArray(RndNum)
myArray(RndNum)=myArray(Fun_I)
myArray(Fun_I)=Fun_X
Next
GetRnd = Join(myArray)
End Function
Function getRndNumber(lowerbound,upperbound)
Randomize
getRndNumber=Int((upperbound-lowerbound+1)*Rnd+lowerbound)
End Function
Response.Write GetRnd(1,1000)
%>


方法二:

复制代码 代码如下:

<%
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
loop
rndarray=join(arrayid)
end function
response.write rndarray(1,5,1) '开始数字,结尾数字,生成多少个
%>


asp生成5000个不重复随机数

<%
Function RanNum(Lownumber,Highnumber)'//产生特定范围内的随机数
Dim j,k
j = Lownumber
k = Highnumber
Randomize
RanNum = Int(( k - j + 1) * Rnd + j)
End Function

'我一直在用这个函数

for i=1 to 5000
response.write(RanNum(10000000,99999999)&"<br>")
next
%>
 

aspnet生成四位数的随机数,并且保证48小时内不会重复

方法1:
将所有四位数字生成并存放到ArrayList或者类似的数组中
然后每次随机取其中一个 并在得到后从数组中删除该数字
ArrayList al = new ArrayList();
for(;;)
{
....(初始化数组并向数组添所有四位数字)
}

下面是得到数字
int i = random.Next(0,al.Count-1);
string str = al[i].ToString();
al.RemoveAt(i);
然后每隔48小时重置数组 计时方式很多 可以用线程 或者其它办法
这样很快并切绝对不会重复 但因为是存放在数组里 所以如果程序退出 数组就重置了 估计LZ是想做网站的验证码吧 那这个方法就可以 如果程序会有中途退出 那可以使用下面的方法 或将数组中的数据存放在数据表里 然后每次对表进行操作

方法2:
拿一张表来存储生成的四位随机数
生成四位随机自然数的办法: int i = random.Next(1000,9999)
生成四位任意编号的办法: string str = random.Next(0,9)
+""+random.Next(0,9)+""+random.Next(0,9)+""+random.Next(0,9)
然后把这个生成的随机数存放到表里
以后每次生成新数之后
select 四位随机数 from 表 where 四位随机数 = 新数
如果表中已经存在这个数 则重新随机 然后再比对
然后每隔48小时清空该表 同上 计时方式很多 可以用线程 或者其它办法
在此不多介绍了
这个办法比较耗时 但可以保证就算程序死掉也不会有重复数据 不过要保证是写在线程里 因为当已生成的数字过多 会需要很长时间才找到不同的四位数字
 

评论关闭