VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



A Non-Repeating Random Number Generator

by Kevin Lawrence (1 Submission)
Category: Math/Dates
Compatability: Visual Basic 3.0
Difficulty: Unknown Difficulty
Date Added: Wed 3rd February 2021
Rating: (9 Votes)

With this simple, and very fast, routine you can generate a series of non-repeating random numbers. You can select a series of 10 numbers, or a series of a million...It doesn't matter. Can be useful for image fades, deck shuffling, random tip of the day, etc. - It even tells you how long it took to generate the series.

Code Returns
A popup message stating how many numbers had been mixed up and how long it took.
Side Effects
The larger the series of numbers the more RAM required. Uses arrays.
API Declarations

Rate A Non-Repeating Random Number Generator

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

Download this snippet    Add to My Saved Code

A Non-Repeating Random Number Generator Comments

No comments have been posted about A Non-Repeating Random Number Generator. Why not be the first to post a comment about A Non-Repeating Random Number Generator.

Post your comment

Subject:
Message:
0/1000 characters