如何批量生成16位的随机不重复数字

好记忆不如烂笔头abc 2005-03-15 05:08:56
如何批量生成16位的随机不重复数字,例如一次生成100个,然后存入数据库。
解决后马上给分!谢谢!
...全文
1100 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodstuday 2005-03-16
  • 打赏
  • 举报
回复

for i=1 to 100
num=gen_key(10)&gen_ID(i)
next
function gen_ID(id)
select case len(id)
case 1
gen_ID="00000"&id
case 2
gen_ID="0000"&id
case 3
gen_ID="000"&id
case 4
gen_ID="00"&id
case 5
gen_ID="0"&id
case else
gen_ID=id
end select
end function

Function gen_key(digits)
dim char_array(10)
char_array(0) = "0"
char_array(1) = "1"
char_array(2) = "2"
char_array(3) = "3"
char_array(4) = "4"
char_array(5) = "5"
char_array(6) = "6"
char_array(7) = "7"
char_array(8) = "8"
char_array(9) = "9"
randomize
do while len(output) < digits
num = char_array(Int((9 - 0 + 1) * Rnd + 0))
output = output + num
loop
gen_key = output
End Function
  • 打赏
  • 举报
回复
楼上能否写一下?
baikaishui_0825 2005-03-16
  • 打赏
  • 举报
回复
12位时间,4位随机数字
每次时间都加一秒
  • 打赏
  • 举报
回复
楼上的不错,For i = 1 t 100 =》For i = 1 to 100


是否也会出现重复呢?如果我希望随机字符函数,由0-9组成,如何写?
goodstuday 2005-03-16
  • 打赏
  • 举报
回复
有个想法,16位数字,你可以拆开10位+6位,前面10位随机数字,后面6位从000001-999999保证不重复
,这样组合成16位数字以后也不重复,而不用一次性生成16位,然后与之前生成的做比较。不知道符不符合你要求
tatty_bad 2005-03-16
  • 打赏
  • 举报
回复
'==================================================
'函数名:NewpPassword
'作 用:生成指定长度的随机字符
'参 数:pwdlen ------ 生成的位数
'==================================================
Function NewpPassword(pwdlen) '生成指定长度的随机字符函数,由A-Z,a-z,2-9组成
Dim TempPwd,MaxNum,MinNum,i,RndNum
For i=1 to pwdlen
Randomize
RndNum = Int((2 - 0 + 1) * Rnd + 0)
Select Case RndNum
Case 0
MaxNum=57
MinNum=50
Case 1
MaxNum=90
MinNum=65
Case 2
MaxNum=122
MinNum=97
End Select
TempPwd=TempPwd & Chr(Int((MaxNum-MinNum+1) * Rnd + MinNum))
Next
NewpPassword=TempPwd
End Function

For i = 1 t 100
Response.Write NewpPassword(10)
Next

生成100个10位的有字母(大小写区分)、数字组成的随机字符串

这应该是效率最高的办法了
  • 打赏
  • 举报
回复
能否给一个简单的例子,好像这样效率不高啊
纪俊 2005-03-16
  • 打赏
  • 举报
回复
你可以使用数组(开始的时候把数组定义的较大)来存放前面生成的不重复的数
如果数量非常大可以借用数据库来存放
第一次生成的数直接存放,第二生成的跟第一个比较,第三个生成的跟前便两个比较...如果第N个数跟前边1~N-1之间有一个重复的,第N个就重新生成
  • 打赏
  • 举报
回复
现在有两个字段,一个是存放16位数字的字段cardnum,一个是是否作废的字段isok。
目的是随机生成16位不重复的数字,存放到cardnum,如果没有作废,16位的数字就不能重复。否则就变成两个一样的号了,不符合要求。

如何可以每次批量生成50个或100个,存放的数据库里。
纪俊 2005-03-15
  • 打赏
  • 举报
回复
bluemoon0001(小天--追梦浪子) 给你的函数不能保证不重复
要实现不重复可以创建一个数组存放前边生成的所有的16位数
每生成一个新的都跟数组中前面的进行比较,如果不重复就通过,如果有重复就重来
king2003 2005-03-15
  • 打赏
  • 举报
回复
楼主是什么数据库SQL的话有函数的newsid()好像是你可以查一查帮助
Hozaka 2005-03-15
  • 打赏
  • 举报
回复
16位随机不重复?这个不重复是指一批里面没有重复,还是16位里面没有重复?数字只有10个啊 ^_^

每次生成以后遍历已经生成的,如果有重复就重新来一遍。不过这样效率不是很高。

楼主能不能说一下你要干吗?可能有更好的办法
bluemoon0001 2005-03-15
  • 打赏
  • 举报
回复
上面数组定义的太大了,你可以改小一点。
bluemoon0001 2005-03-15
  • 打赏
  • 举报
回复
试一下,循环调用下面这个函数:
number1=gen_key(16)

Function gen_key(digits)
dim char_array(50)
char_array(0) = "0"
char_array(1) = "1"
char_array(2) = "2"
char_array(3) = "3"
char_array(4) = "4"
char_array(5) = "5"
char_array(6) = "6"
char_array(7) = "7"
char_array(8) = "8"
char_array(9) = "9"
randomize
do while len(output) < digits
num = char_array(Int((9 - 0 + 1) * Rnd + 0))
output = output + num
loop
gen_key = output
End Function

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧