如何不重複地產生隨機數
編程工具: VISUAL BASIC 6.0問題: 我現在要做一個類似於用身份證號碼抽獎的程序。要求從1到370隨機抽取一個整數,並且每次抽取的數字不得相同,但為保證公平又要每個數字都有可能抽到,當然抽取的次數不大於370次,不知用VB6如何實現。如能解決,萬分感謝! 回答: 實現的方法有很多,下面只是一種。先建立一組標誌,如果選中了就設置為1。每次選數時,先判斷標誌是否為1,如果不為1,則選中,否則忽略選擇下一個。下面是例子:
Dim n(1 To 370), i, j, q
For i = 1 To 370
n(i) = 0
Next
j = 0
Randomize Timer
While j < 10
q = Int(Rnd(1) * 369 + 1)
If n(q) = 0 Then
Print q
n(q) = 1
j = j + 1
End If
Wend
又問:
我想讓1到370個數字在窗體內不停的快速循環顯示,一按下停止按鈕或按下回車鍵就停止顯示,應如何做。最好能和以上程序結合起來。謝謝!
回答:可以建立兩個按鈕,Command1和Command2,其中Command1是開始按鈕,Command2是結束按鈕。再加上Label1。
Dim bStop As Boolean
Dim n(1 To 370), i, j, q
Private Sub Command1_Click()
Command1.Visible = False
Randomize Timer
While j < 10
q = Int(Rnd(1) * 369 + 1)
Label1.Caption = q: DoEvents
If n(q) = 0 And bStop = True Then
Print q
n(q) = 1
j = j + 1
bStop = False
End If
Wend
End Sub
Private Sub Command2_Click()
bStop = True
End Sub
Private Sub Form_Load()
For i = 1 To 370
n(i) = 0
Next
j = 0
bStop = False
End Sub
頁:
[1]