我们通过随机数函数Rnd结合for循环嵌套来实现生成十个不重复的随机数,代码如下:
Option Explicit
Dim a(9) As Integer, i As Integer, j As Integer ‘定义数组及循环变量
Dim Temp As Integer ’定义一个临时变量存储生成的随机数
Dim Flag As Boolean ‘定义一个布尔型变量来给数组元素做标记
Private Sub Form_Click()
Randomize ’初始化随机数发生器
For i = 0 To 9 ’外循环,用来生成十个随机数和将满足条件的这是个随机数由If条件判断后输出
Temp = Int(Rnd() * 100 + 1) ‘生成一个随机数存放在Temp中
Flag = False ‘假设此时的判定重复标识Flag为False(不重复)
For j = 0 To i - 1 ‘内循环,来筛选外循环生成的随机数是否跟已存入数组的任何一个元素重复
If Temp = a(j) Then
i = i - 1 ‘如果重复,则通过将循环变量减一来退回到上一个循环
Flag = True ‘将重复标识设置为True(重复)
Exit For ‘由于在数组中已经存在这次循环所生成的数,于是放弃这次循环
End If
Next j
If Flag = False Then
a(i) = Temp ‘如果标识便是不重复,那当前的随机数满足条件,将这个数存入数组
If i = 9 Then
Print a(i) & Chr(13) & Chr(10)
Else
Print a(i);
End If ‘这个If选择是我自己设计用来控制输出格式的
End If
Next i
End Sub
这个代码总体的简要思想就是:
由外循环产生随机数,然后进入内循环,判断随机数是否与数组中已有元素重复
如果重复,取消掉该次循环,再次进行内循环;如果不重复,就将这个符合条件的数赋值给对应的数组元素
最后,由外循环将符合条件的数按照格式在窗体上显示出来
Dim a(9) As Integer, i As Integer, j As Integer
For i = 0 To 9
For j = 0 To i - 1
If a(i) = a(j) Then
i = i - 1
Exit For
End If
Next j
Next i
Print a(j) & Chr(13) & Chr(10)
Else
Print a(j) & " ";
End If
欢迎访问我的博客:http://151451325.blog.163.com/ http://blog.sina.com.cn/tonyliuchen