用VB生成20位随机字符,由大写字母和数字组成,每五位之间用符号“-”隔开

我用了下面这段代码:PrivateSubCommand1_Click()N=20ForI=1ToN'N是指定长度RandomizeT=Int(Rnd()*3)Select... 我用了下面这段代码:
Private Sub Command1_Click()
N = 20
For I = 1 To N 'N是指定长度
Randomize
T = Int(Rnd() * 3)
Select Case T
Case 0
Randomize
R = R & Chr(Int(Rnd() * 25) + 65) '生成一个大写字母
Case 1
Randomize
R = R & Chr(Int(Rnd() * 9) + 48) '生成一个数字
End Select
Next I
Text1.Text = R '将结果输出在文本框中。
End Sub

这段代码有两个问题:
1.生成的位数不正确,好像是随机位数,很少有20位的。
2.每五位之间没有符号“-”隔开。

谢谢各位帮助了,速度快还可追加分数。
展开
 我来答
瑞安阿芳
2012-10-09 · TA获得超过1946个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:885万
展开全部
你这个算法有很大的问题:
1 . Randomize只需一次就可以了
2. 你这里的T应该是0-2, 你的程序没有对2进行判断
3. 实际循环一次只需产生一个随机数就可以了.

下面我给你一个程序:
Private Sub Command1_Click()
N = 20
Randomize
For I = 1 To N 'N是指定长度
t = Int(Rnd() * 36) '产生一个0-35的随机数,因为数字加字母总共36个.
If t < 10 Then
R = R & Chr(48 + t) '生成一个数字(随机数在0-9之间),也可写作:R = R & t
Else
R = R & Chr(65 - 10 + t) '生成一个大写字母(随机数在10-35之间)
End If
If (I Mod 5 = 0) And I <> N Then R = R & "-" '被5整除时,加上-号
Next I
Text1.Text = R '将结果输出在文本框中。
End Sub
'不好意思,刚才在<>N后面少一个空格
权群28
2012-10-09 · TA获得超过750个赞
知道小有建树答主
回答量:513
采纳率:100%
帮助的人:210万
展开全部
Private Sub Command1_Click()
N = 20
s=""
R=""
For I = 1 To N 'N是指定长度
Randomize
T = Int(Rnd() * 3) '这里会是0~3之间的数、所以Case 2也加上吧。
Select Case T
Case 0
Randomize
R = R & Chr(Int(Rnd() * 25) + 65) '生成一个大写字母
Case 1
Randomize
R = R & Chr(Int(Rnd() * 9) + 48) '生成一个数字
case 2
R = R & Chr(Int(Rnd() * 25) + 65) '生成一个大写字母
case else
R = R & Chr(Int(Rnd() * 9) + 48) '生成一个数字
End Select
if len(R)\5=len(R)/5 then
s=s & right(R,1) & "-"
else
s=s & right(R,1)
end if
Next I
Text1.Text = S '将结果输出在文本框中。
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式