随机数.txt

来自「生成不重复随机数算法,vb实现!」· 文本 代码 · 共 69 行

TXT
69
字号
无重复随机数序列产生器


     来源:http://www.planet-source-code.com
    
    '***************************************************************
    ' Name: A Non-Repeating Random Number Generator
    ' Description:With this simple, and very fast, routine you can ge
    ' nerate a series of non-repeating random numbers. You can select a
    ' series of 10 numbers, or a series of a million...It doesn't matte
    ' r. Can be useful for image fades, deck shuffling, random tip of t
    ' he day, etc. - It even tells you how long it took to generate the
    ' series.
    ' By: Kevin Lawrence
    ''
    ' Inputs:None
    '
    ' Returns:A popup message stating how many numbers had been mixed
    ' up and how long it took.
    '
    'Assumes:None
    '
    'Side Effects:The larger the series of numbers the more RAM requi
    ' red. Uses arrays.
    '
    'Code provided by Planet Source Code(tm) (http://www.PlanetSource
    ' Code.com) 'as is', without warranties as to performance, fitness,
    ' merchantability,and any other warranty (whether expressed or impl
    ' ied).
    '***************************************************************
    Private Sub Command1_Click()
    '-------------------------------------------------------------
    ' Produces a series of X random numbers without repeating any
    '-------------------------------------------------------------
    'Results can be used by using array B(X)
    Dim A(10000) ' Sets the maximum number to pick
    Dim B(10000) ' Will be the list of new numbers (same as DIM above)
    Dim Message, Message_Style, Message_Title, Response
    'Set the original array
    MaxNumber = 10000 ' Must equal the DIM above
    For seq = 0 To MaxNumber
    A(seq) = seq
    Next seq
    'Main Loop (mix em all up)
    StartTime = Timer
    Randomize (Timer)
    For MainLoop = MaxNumber To 0 Step -1
    ChosenNumber = Int(MainLoop * Rnd)
    B(MaxNumber - MainLoop) = A(ChosenNumber)
    A(ChosenNumber) = A(MainLoop)
    Next MainLoop
    EndTime = Timer
    TotalTime = EndTime - StartTime
    Message = "The sequence of " + Format(MaxNumber, "#,###,###,###") + 
    " numbers has been" + Chr$(10)
    Message = Message + "mixed up in a total of " + Format(TotalTime, 
    "##.######") + " seconds!"
    Message_Style = vbInformationOnly + vbInformation + vbDefaultButton2
    Message_Title = "Sequence Generated"
    Response = MsgBox(Message, Message_Style, Message_Title)
    End Sub
    
    以下为测试部分
    'Dim i
    ' For i = 1 To 50
    ' Debug.Print B(i)
    ' Next i
    End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?