Private Sub TestPlayLotto()
PlayLotto 59, 6
End Sub
Private Sub PlayLotto(Optional ByVal MaxPoolNumber As Long = 59, Optional ByVal SelectNumbers As Long = 6)
Dim IntegerArray() As Long
Dim i As Long
ReDim IntegerArray(1 To MaxPoolNumber)
For i = 1 To MaxPoolNumber
IntegerArray(i) = i
Next
ShuffleArray IntegerArray, SelectNumbers
Debug.Print "Lotto numbers: ";
For i = 1 To SelectNumbers
Debug.Print IntegerArray(i),
Next
Debug.Print
End Sub
Private Sub ShuffleArray(ByRef ArrayToShuffle As Variant, Optional ByVal MaxSteps As Long = 0)
Dim MaxArrayIndex As Long, MinArrayIndex As Long
Dim MaxIndexToShuffle As Long
Dim i As Long
Dim IndexToReplace As Long
MinArrayIndex = LBound(ArrayToShuffle)
MaxArrayIndex = UBound(ArrayToShuffle)
If MaxSteps = 0 Then 'shuffle all
MaxIndexToShuffle = MaxArrayIndex
Else ' shuffle only first n (=MaxSteps) items
MaxIndexToShuffle = MaxSteps - 1 + MinArrayIndex
End If
Randomize Now()
For i = MinArrayIndex To MaxIndexToShuffle
IndexToReplace = Int(((MaxArrayIndex - i + 1) * rnd()) + i)
SwapValues ArrayToShuffle(i), ArrayToShuffle(IndexToReplace)
Next i
End Sub
Private Sub SwapValues(ByRef Value1 As Variant, ByRef Value2 As Variant)
Dim TempVal As Variant
TempVal = Value1
Value1 = Value2
Value2 = TempVal
End Sub