之前找了一 C#的 考,但有一句用VB.NET 找不出 怎 ,以致好 一段 我的 都是重 的,今天在小 友的耐心指 下,用 Dim aa As Integer = CType(DateTime.Now.Ticks Mod System.Int32.MaxValue, Integer)作了Random的 子,但是 中 情 下 行才正常,若 中 出 System.StackOverflowException' 的未 理例外 生於 mscorlib.dll的
於是修正代 如下, 算跑出自己尚算 意的 果
Dim allChar As String = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,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"
Dim allCharArray() As String = allChar.Split(",")
Dim randomCode As String = ""
Dim temp As Integer = -1
Dim rand As Random = New Random
Dim i As Integer = 0
Do While (i < codeCount)
If (temp <> -1) Then
'rand = New Random(i * temp)若 有下面 常重 的
Dim aa As Integer = CType(DateTime.Now.Ticks Mod System.Int32.MaxValue, Integer)'用VB.NET 法,去掉了 I和TEMP的相乘
rand = New Random(aa)
End If
Dim t As Integer = rand.Next(61) + 1'+1是改 ,61表示字符的 ,索引值 0 始
If t > allCharArray.Length - 1 Then t = allCharArray.Length - 1'改
If temp = t Then'抑止 的 重
' Return createrandomcode(codecount)出 mscorlib.dll的死胡同
i -= 1'改
randomCode = Microsoft.VisualBasic.Left(randomCode, i)'改
End If
temp = t
randomCode = randomCode + allCharArray(t)
i += 1
Loop
Return randomCode