我們通過隨機數函數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