Non-Repeating Numbers – With Excel RND function
In Excel VBA or any programming language we have built in function to generate random number.
But it will generate same number any number of times.
With the code in this article, You can generate a unique number from a range of predefined number. Each time picking a number randomly without any repetition.
Unique Random Numbers
This is the step by step process that is used in the Unique Random generation VBA code.
- Save previously generated number in an array, cell or file.
- Reference the array every iteration
- Check the number is already generated or not.
- If the random number is already generated, then produce another number
Repeat the above steps till the function produces a unique number.
Also Read: How to generate Random numbers in Excel?
Excel VBA code – Create Random Number – Non-Repetitive
The following Excel VBA code exactly does this process.
Limitation: It generates only 100 numbers. If you need more numbers, increase the array size.
Note: Before starting with this process or generating a new set of unique random numbers, call the UniqueRandomInit function, to reset or clear the array storage.
Option Explicit 'Table Array to store generated random numbers Public Rtable(100) As Integer Public Ridx As Integer 'Clear & Reset the array storage Public Function UniqueRandomInit() Dim i As Integer For i = 0 To 100 Rtable(i) = 0 Next i Ridx = 0 End Function 'Generate non repeating unique numbers Public Function UniqueRandom(rLow As Integer, rHigh As Integer) As Integer Dim i As Integer, Rndnum As Integer, Loop_Count As Integer Loop_Count = 0 Label_Init_Random: If Ridx >= (rHigh - rLow + 1) Then MsgBox "Limit Reached: Numbers Generated(" & Ridx & ");Max Numbers Allowed(" & (rHigh - rLow + 1) & ")" UniqueRandom = 0 GoTo Label_End_Function End If Rndnum = VBA.Round(rLow + VBA.Rnd(1) * (rHigh - rLow), 0) For i = 0 To Ridx If Rndnum = Rtable(i) Then GoTo Label_Init_Random: End If Next i Ridx = Ridx + 1 Rtable(Ridx) = Rndnum UniqueRandom = Rndnum Label_End_Function: End Function
Use UniqueRandomInit function only during start of the execution. Call UniqueRandom whenever you need a special number.
Also Read: VBA Message Box Set No as Default Button
Use of Random Numbers in Excel
Game sequence generation logic uses this kind of Unique Random numbers.
- The code has to pick set of predefined game rules in random sequence but without repeating the same rule again.
- Quiz or online test automation uses these logic as well.
- Pick random question from predefined question list, but choosing question randomly.
- This way – same question will not be repeated & also randomized.
Like this, there are many uses of Unique random number generation.