JDP 發表於 2005-5-12 12:59:15

如何不重複地產生隨機數

編程工具: 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]
查看完整版本: 如何不重複地產生隨機數