对数组进行随机的排序,就是去掉重复的随机数,我已经用C++实现了,但用VB实现就出问题了
下面是代码,先谢谢各位
Dim a(10) As Integer
Dim temp(10) As Integer
Dim i As Integer = 0
For i = 0 To 9
a(i) = i
temp(i) = 11
Next
Randomize(Timer()) '用时间初始化随即种子
Dim are As Integer = 0
while i<=10 '假设循环10次,应该用无限循环
Dim flag As Boolean = True '标记变量,false表示随即数产生过,true表示没产生过
'默认是没生成过
Dim randTemp As Integer
randTemp = rnd () * 10 '生成0到9的随即数
Dim j As Integer
For j = 0 To j = 9 '判断该随即数是否生成过
If (temp(j) = a(randTemp)) Then
flag = False
Exit For
End If
Next
If flag Then '根据flag赋值
Dim k As Integer
For k = 0 To k = 9
If (temp(k) = 11) Then
temp(k) = a(randTemp)
are = are + 1
Exit For
End If
Next
End If
If are = 10 Then
exit while
End If
end while
下面是代码,先谢谢各位
Dim a(10) As Integer
Dim temp(10) As Integer
Dim i As Integer = 0
For i = 0 To 9
a(i) = i
temp(i) = 11
Next
Randomize(Timer()) '用时间初始化随即种子
Dim are As Integer = 0
while i<=10 '假设循环10次,应该用无限循环
Dim flag As Boolean = True '标记变量,false表示随即数产生过,true表示没产生过
'默认是没生成过
Dim randTemp As Integer
randTemp = rnd () * 10 '生成0到9的随即数
Dim j As Integer
For j = 0 To j = 9 '判断该随即数是否生成过
If (temp(j) = a(randTemp)) Then
flag = False
Exit For
End If
Next
If flag Then '根据flag赋值
Dim k As Integer
For k = 0 To k = 9
If (temp(k) = 11) Then
temp(k) = a(randTemp)
are = are + 1
Exit For
End If
Next
End If
If are = 10 Then
exit while
End If
end while
Dim b(9) As Boolean
Dim i As Long
Dim r As Long
Dim a(9) As Long
Randomize
While i < 10
r = Int(Rnd(1) * 10)
If b(r) = False Then
a(i) = r
b(r) = True
i = i + 1
End If
Wend
整理了一下,不过temp数组里也只是将数组a的顺序打乱了一下重新排列,不知道楼主是要干什么。 Dim a(9) As Integer
Dim temp(9) As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim flag As Boolean
Dim randTemp As Integer
Dim are As Integer
For i = 0 To 9
a(i) = i
temp(i) = 11
Next
Randomize '用时间初始化随即种子 are = 0
Do While are < 10 '假设循环10次,应该用无限循环
flag = True '标记变量,false表示随即数产生过,true表示没产生过 randTemp = Rnd() * 9 '生成0到9的随即数 For j = 0 To 9 '判断该随即数是否生成过
If temp(j) = a(randTemp) Then
flag = False
Exit For
End If
Next
If flag Then '根据flag赋值
For k = 0 To 9
If (temp(k) = 11) Then
temp(k) = a(randTemp)
are = are + 1
Exit For
End If
Next
End If
Loop
给你个代码参考吧
Dim a(9) As Integer, i As Long, rd As Integer, t As Long
Randomize Timer
For i = 0 To 9
a(i) = i
Next
For i = 0 To 8
rd = Fix(Rnd * (10 - i)) + i
t = a(i)
a(i) = a(rd)
a(rd) = t
Next