如何用VB.NET生成一个随机字符串

如何用VB.NET生成一个12位的随机字符串?最好给我编一个函数,写上注释!如果经本人测试可以,我将再加分给你!最好不要复制别人的代码,因为我在百度上搜索了很多,都不行!... 如何用VB.NET生成一个12位的随机字符串?最好给我编一个函数,写上注释!如果经本人测试可以,我将再加分给你!最好不要复制别人的代码,因为我在百度上搜索了很多,都不行!
qha8810,我为什么测试通不过啊?RND不是一个类型,不能用作表达式
展开
 我来答
user830316
2008-01-04 · TA获得超过1390个赞
知道大有可为答主
回答量:1371
采纳率:0%
帮助的人:1542万
展开全部
用法 RndString(xx) xx为随机数字长度
比如12位长度的随机字符串 则为 RndString(12)
字符串包含数字和大小写字母,函数如下:
Function RndString(ByVal l As Integer) As String
Randomize()
Dim R, i As Integer
Dim S As Char
Dim returnStr As String
returnStr = ""
'a-z 的ASCII码是:97-122
'A-Z 的ASCII码是:65-90
'0-9 的ASCII码是:48-57

For i = 1 To l
R = Int(Rnd() * 62) '随机生成的字符有大小写字母和数字,共有26个
If R < 10 Then '如果小于10,则是数字 数字的ASCII是48-57 对应 随机数字 0-9 所以要将随机数字加48
S = Chr(R + 48) 'Chr 是将把数字按Ascii码转换为对应的字符
ElseIf R < 36 Then '如果小于36,则是大写字母 大写字母的ASCII是65-90 对应 随机数字10-35 所以要将随机数字加55
S = Chr(R + 55)
Else '如果大于36,则是小写字母 小写字母的ASCII是97-122 对应 随机数字36-62 所以要将随机数字加61
S = Chr(R + 61)
End If
returnStr = returnStr + S
Next
RndString = returnStr
End Function
listlofusage
2008-01-05
知道答主
回答量:63
采纳率:0%
帮助的人:0
展开全部
#region 随机生成 一字符串
/// <summary>
/// 随机生成 一字符串
/// </summary>
/// <param name="codeCount">生成的个数</param>
/// <returns>返回一个字符串</returns>
private string CreateRandomCode(int codeCount)
{
string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";
string[] allCharArray = allChar.Split(',');
string randomCode = "";
int temp = -1;

Random rand = new Random();
for (int i = 0; i < codeCount; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
}
int t = rand.Next(35);
if (temp == t)
{
return CreateRandomCode(codeCount);
}
temp = t;
randomCode += allCharArray[t];
}
return randomCode;
}
#endregion用的时候:this.CreateRandomCode(12).ToString();我测试过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ml0133
2008-01-04 · TA获得超过312个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:261万
展开全部
随机的字符串啊。
最简单的是用GUID.NEWGUID来生成一个。
这个GUID生成的长度不是楼主所有的。
不过,你可以截取啊。
把里面的“-”给替换了就可以了。

还有一个方法,如果楼主对字符串的随机度很高的话,建议是用RNGCryptoServiceProvider类,这个类是专为密码产生随机数。随机后可以自己转换成字符串。
希望能对你的程序帮上忙。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5f7ea1b6d
2008-01-05 · 超过62用户采纳过TA的回答
知道答主
回答量:344
采纳率:0%
帮助的人:0
展开全部
Protected Function RndNum(ByVal VcodeNum As Integer) As String
Dim Vchar As String = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z"
Dim VcArray() As String = Split(Vchar, ",") '将字符串生成数组
Dim VNum As String = ""
Dim i As Byte
For i = 1 To VcodeNum
Randomize()
VNum = VNum & VcArray(Int(62 * Rnd())) '数组从0开始读取,所以这里为62*Rnd.(63=26+26+10)
Next
Return VNum
End Function

如果不区分大小写,或则只要数组,只需修改Vchar的字符串以及循环中的数字(62)
VcodeNum是随机数的个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友546c483ff
2008-01-04
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
你在百度上搜索了都不行?不信!这个就行,我亲自测试过

Public Function GetRndString(ByVal lngNum AS Long) As String
If lngNum <= 0 Then Exit Function

Dim i as Long
Dim intLength As Integer
Const STRINGSOURCE = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
intLength = Len(STRINGSOURCE)-1

Randomize
For i = 1 To lngNum
GetRndString = GetRndString & Mid(STRINGSOURCE,Int(Rnd * intLength + 1),1)
Next
End Function

调用

Msgbox GetRndString(10)

参考资料: 百度知道

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式