帮我看看用VB写的随机程序有什么问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 01:21:15
这个是源代码:
Function RandABC(N As Long, Optional Model As Long = 1) As String
''N是你想要得到字符串的长度
''Model是你想得到大写还是小写字母,1--混合大小写,2--大写,3--小写"
StrXiaoxie = "a1b2c3d4e5f6g7h8i9j0klmnopqrstuvwxyz"
If N <= 20000 Then
For i = 1 To 10
Randomize
sj = sj & Mid(StrXiaoxie, 36 * Rnd + 1, "1")
Next
Else
MsgBox "N值太大了,计算机缓冲不过来"
End If
RandABC = sj
End Function
Private Sub Command1_Click()

Open App.Path & "\11.txt" For Output As #1
For o = 1 To 10000
Print #1, RandABC(1, 2)
Next
Close #1
MsgBox "ok"

End Sub

我生成的10000行数据有大量重复,而且重复都是成片的,类似
98ufrvsabg
rszdbmxfob
yqgj0jl6d6
.....
98ufrvsabg
rszdbmxfob
yqgj0jl6d6
.....
各位帮慢看一下错在哪里?谢谢
下面的我都尝试过了,重复率都很大,80%左右。请问可不可以用一个随机调乱数列的函数来打乱生成数的顺序?如果可以有没有这个函数?

Function RandABC(N As Long, Optional Model As Long = 1) As String
''N是你想要得到字符串的长度
''Model是你想得到大写还是小写字母,1--混合大小写,2--大写,3--小写"
StrXiaoxie = "a1b2c3d4e5f6g7h8i9j0klmnopqrstuvwxyz"
If N <= 20000 Then
For i = 1 To 10
sj = sj & Mid(StrXiaoxie, 36 * Rnd + 1, "1")
Next
Else
MsgBox "N值太大了,计算机缓冲不过来"
End If
RandABC = sj
End Function
Private Sub Command1_Click()
Randomize
Open App.Path & "\11.txt" For Output As #1
For o = 1 To 10000
Print #1, RandABC(1, 2)
Next
Close #1
MsgBox "ok"
End Sub
把不重复(Randomize)换个地方就OK了

For i = 1 To 10
Randomize
'修改这个地方试试
sj = sj & Mid(StrXiaoxie, Int(36 * Rnd(i)) + 1, 1)
Next

这个可以,不过有点慢
Function RandABC(N As Long, Optional Model As Long = 1) As String
''N是你想要得到字符串的长度
''Model是你想得到大写还是小写字母,1--混合大小写,2--大写,3--小写&qu