早教吧作业答案频道 -->数学-->
用VB生成20位随机字符,由大写字母和数字组成,每五位之间用符号“-”隔开我用了下面这段代码:PrivateSubCommand1Click()N=20ForI=1ToN'N是指定长度RandomizeT=Int(Rnd()*3)SelectCaseTCase0RandomizeR
题目详情
用VB生成20位随机字符,由大写字母和数字组成,每五位之间用符号“-”隔开
我用了下面这段代码:
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.每五位之间没有符号“-”隔开.
我用了下面这段代码:
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.每五位之间没有符号“-”隔开.
▼优质解答
答案和解析
你这个算法有很大的问题:
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后面少一个空格
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后面少一个空格
看了 用VB生成20位随机字符,由...的网友还看了以下:
请求翻译乱码请高手翻译下什么意思啊?亅酰谎u知欋5??k(so?笿?(n?豃]?n#?k(so? 2020-04-06 …
matlab函数调用问题,一个矩阵的自变量,怎么都是同一个答案function [ E ] = p 2020-05-16 …
矩阵(E+A)^n等于什么?看到一个二阶的矩阵n次方=E^n+n(E)^(n-1)A,三阶的n次方 2020-06-12 …
请问下面的经纬度数分别是哪些城市?107°E,6°S.96°E,17°N.90°E,23.5°N. 2020-07-03 …
如果对于任意给定的正数总存在一个正整数N,当n>N证:对于任意给定的e>0,要使|yn-2|=|2 2020-07-09 …
已知甲(40°N,110°E),乙(40°N,115°E),丙(30°N,115°E)三地,且夏至 2020-07-18 …
求证e^i(4π/n)+e^i(8π/n)+...+e^i4(n-1)π/n+e^i(4nπ/n)= 2020-11-01 …
用C++求不超过30000E数列的最大E数的值/*数列:E(1)=E(2)=1E(n)=(n-1)* 2020-11-20 …
英语:下1.将下联打乱的字母组成单词,并写出汉语意思1.a,e,h,g,c,n[]2.e,i,s,t 2020-12-10 …
limn→+00,e的n分之1次方*(1-e)除以n*(1-e的n分之1次方)=e-1是怎么算来的? 2020-12-17 …