 Lotto Numbers Generator

The example is an expansion of the Lotto Number Generator program.  It allows users to select their inputs, number of population set (from 10 to 100) and the number of data point to be selected (from 2 to 10), and then populate the random number.  Even though the lotto example is used, gambling is not encouraged.

This program involves resampling without replacement. The sub-procedure, DoubleSort( ), sorts the numbers of one array based on the numbers of another array. The sub-procedure, Resample( ), creates numbers from 1 to 54 for array two (Hold2) and 54 random numbers for array one (Hold), and calls in the sub-procedure, DoubleSort( ). When executed,the program will return 5 sets of 6 lotto numbers in column B through F starting from row 13 of the worksheet. The user can select the number of sets by altering the number of iterations on line 4 of the program. An example of the output is displayed below. Option Explicit
Option Base 1
Public jj As Long
Public Const iteration = 5

'***********************************************************************
'*                                     Resampling Process                                       *
'***********************************************************************

Sub Resample()
Dim i As Long
Dim hold(54) As Single, Hold2(54) As Single
Randomize

For i = 1 To 54
Hold2(i) = i
Next i

For jj = 1 To iteration

For i = 1 To 54

hold(i) = Rnd
Next i

Call DoubleSort(54, hold, Hold2)

For i = 1 To 6

Cells(jj + 3, i) = Hold2(i)
Next i

Next jj

End Sub

'***********************************************************************
'*             Sorting Process -  Sort array y based on array x                 *
'***********************************************************************

Sub DoubleSort(n As Long, x() As Single, y() As Single)
Dim xTemp As Double
Dim yTemp As Double
Dim i As Long
Dim j As Long

For j = 2 To n

xTemp = x(j)

yTemp = y(j)

For i = j - 1 To 1 Step -1

If (x(i) <= xTemp) Then GoTo 10
x(i + 1) = x(i)
y(i + 1) = y(i)
Next i

i = 0

10   x(i + 1) = xTemp
y(i + 1) = yTemp

Next j

End Sub

VBA Codes 