VB产生不重复的随机数的code问题,高手来看看,50分

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:57:28
Private Sub Command2_Click()
For i = 1 To 6
Label1(i).Caption = Int(49 * Rnd + 1)

If i > 1 Then
For j = 1 To i
Do While Label1(i).Caption = Label1(j).Caption

Label1(i).Caption = Int(49 * Rnd + 1)

Loop
Next j
End If
Next i

End Sub

lxz1969的答案是有问题的,只生成6个随机数倒没什么,如果是生成几十个数,就有可能会死循环。就根据你提出的代码做下修改也可以的。你的代码主要错在那个判断重复上,修改如下:

Private Sub Command2_Click()
Dim i As Integer, j As Integer '循环用
Dim l(1 To 6) As Integer '随机数
Dim A As Integer '临时数
Dim IsHas As Boolean '判断重复

For i = 1 To 6 '生成6个数
Randomize '初始化
If i = 1 Then '第一次不用判断
l(i) = Int(49 * Rnd + 1)
Else '之后要进行判断是否有重复
Do
IsHas = False '初始化
Randomize
A = Int(49 * Rnd + 1) '生成临时数
For j = 1 To i '判断是否重复
If A = l(j) Then
IsHas = True '有重复
Exit For '立即退出并重新生成
End If
Next j
Loop Until IsHas = False '如果没有重复,则继续下一步
l(i) = A
End If
Label1(i).Caption = l(i) '赋值到标签,如果直接使用标签做数组,则有可能会导致类型不一致
Ne