新聞| | PChome| 登入
2007-06-10 17:32:20 | 人氣73| 回應0 | 上一篇 | 下一篇
推薦 0 收藏 0 轉貼0 訂閱站台

產生不重複亂數的方法

一、以For ...Next 技巧,產生10個1~50的亂數,存入陣列A()

        Dim A(10) As Integer       
        Randomize()

        For i = 1 To 10
            A(i) = Fix(Rnd() * 50) + 1                      'Fix(n)無條件捨去小數
            For j = 0 To i - 1
                If A(i) = A(j) Then
                    i = i - 1
                    Exit For
                End If
            Next j
        Next i

二、以For ...Next 技巧,產生10個10~50的亂數,存入陣列A()

        Dim A(10) As Integer       
        Randomize()

        For i = 1 To 10
            A(i) = Fix(Rnd() *(50-10+1)) + 10
            For j = 0 To i - 1
                   If A(i) = A(j) Then
                       i = i - 1
                      Exit For
                   End If
            Next j
        Next i

三、最快速,最有效率的作法,產生1~50的亂數只要執行迴圈50次。

n = 50
Dim A(50) As Integer
For i = 0 To n
    A(i) = i + 1
Next
Randomize
For i = n To 1 Step -1
    num = Fix((i + 1) * Rnd)
    temp = A(i)
    A(i) = A(num)
    A(num) = temp
    times = times + 1
Next

最後可觀察times的值就是50,也就是說執行50次所產生的亂數均沒有重複發生。

台長: Kenny
人氣(73) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 教育學習(進修、留學、學術研究、教育概況) | 個人分類: 程式設計 |
此分類下一篇:鬧鈴程式
此分類上一篇:如何在模組中宣告常數

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文