Imports System
Module LotteryGenerator
'
' This program generates random lottery numbers for:
' - choosing 6 distinct numbers out of 37
' - choosing 1 distinct power number out of 7
'
' It uses:
' - System.Random for random number generation
' - Fisher–Yates shuffle to efficiently pick unique numbers
' - clean functions and idiomatic VB.NET style
'
'---------------------------------------------------------------
' shuffleAndPick:
' Performs a Fisher–Yates shuffle on the array "arr" of size n.
' After shuffling, the first "count" elements are the chosen numbers.
'
' This guarantees:
' - all numbers are unique
' - uniform randomness
' - efficient O(n) performance
'---------------------------------------------------------------
Sub ShuffleAndPick(arr() As Integer, n As Integer, count As Integer, rng As Random)
For i As Integer = n - 1 To 1 Step -1
Dim j As Integer = rng.Next(i + 1) ' random index 0..i
Dim temp As Integer = arr(i)
arr(i) = arr(j)
arr(j) = temp
Next
' After shuffle, arr(0..count-1) are the chosen numbers
End Sub
'---------------------------------------------------------------
' generatePowerNumber:
' Returns a single random number in the range [1..max].
'---------------------------------------------------------------
Function GeneratePowerNumber(max As Integer, rng As Random) As Integer
Return rng.Next(1, max + 1)
End Function
Sub Main()
Dim rng As New Random()
Const mainCount As Integer = 6
Const mainMax As Integer = 37
Const powerMax As Integer = 7
' Prepare array 1..37
Dim numbers(mainMax - 1) As Integer
For i As Integer = 0 To mainMax - 1
numbers(i) = i + 1
Next
' Shuffle and pick first 6 numbers
ShuffleAndPick(numbers, mainMax, mainCount, rng)
' Sort the first 6 numbers for nicer output
Array.Sort(numbers, 0, mainCount)
' Generate power number
Dim powerNumber As Integer = GeneratePowerNumber(powerMax, rng)
' Output results
Console.Write("Main numbers (6 out of 37): ")
For i As Integer = 0 To mainCount - 1
Console.Write(numbers(i) & " ")
Next
Console.WriteLine()
Console.WriteLine("Power number (1 out of 7): " & powerNumber)
End Sub
End Module
'
' run:
'
' Main numbers (6 out of 37): 1 4 27 28 32 37
' Power number (1 out of 7): 1
'