Advertisement
1_2002 Math/ Dates #104099

A Non-Repeating Random Number Generator

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.

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
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
Original Comments (3)
Recovered from Wayback Machine