找回密碼
 註冊
搜索
查看: 6447|回復: 0

如何不重複地產生隨機數

[複製鏈接]
發表於 2005-5-12 12:59:15 | 顯示全部樓層 |閱讀模式
[size=-1]編程工具: VISUAL BASIC 6.0

問題: 我現在要做一個類似於用身份證號碼抽獎的程序。要求從1到370隨機抽取一個整數,並且每次抽取的數字不得相同,但為保證公平又要每個數字都有可能抽到,當然抽取的次數不大於370次,不知用VB6如何實現。如能解決,萬分感謝! [size=-1]回答: [size=-1]實現的方法有很多,下面只是一種。先建立一組標誌,如果選中了就設置為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
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|彩色筆小沛的知識庫

GMT+8, 2024-4-29 20:00 , Processed in 0.021056 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表