Home » C Sharp Lottery Number Generator with code explanation

C Sharp Lottery Number Generator with code explanation

by pqzrmred71

Below is a C# Lottery Number Generator program.

It generates a set of random lottery numbers based on the user’s chosen range and quantity.

Code

using System;
using System.Collections.Generic;

class LotteryNumberGenerator
{
    static void Main(string[] args)
    {
        Console.WriteLine("Welcome to the Lottery Number Generator!");

        while (true)
        {
            Console.WriteLine("\nChoose an option:");
            Console.WriteLine("1. Generate Lottery Numbers");
            Console.WriteLine("2. Exit");
            Console.Write("Enter your choice: ");

            string choice = Console.ReadLine();

            switch (choice)
            {
                case "1":
                    GenerateLotteryNumbers();
                    break;
                case "2":
                    Console.WriteLine("Goodbye!");
                    return;
                default:
                    Console.WriteLine("Invalid choice. Please try again.");
                    break;
            }
        }
    }

    static void GenerateLotteryNumbers()
    {
        Console.Write("\nEnter the number of lottery numbers to generate: ");
        if (!int.TryParse(Console.ReadLine(), out int numberCount) || numberCount <= 0)
        {
            Console.WriteLine("Invalid input. Please enter a positive integer.");
            return;
        }

        Console.Write("Enter the maximum number in the range: ");
        if (!int.TryParse(Console.ReadLine(), out int maxNumber) || maxNumber <= 0)
        {
            Console.WriteLine("Invalid input. Please enter a positive integer.");
            return;
        }

        if (numberCount > maxNumber)
        {
            Console.WriteLine("The number of lottery numbers cannot exceed the range of numbers.");
            return;
        }

        // Generate unique random numbers
        HashSet<int> lotteryNumbers = new HashSet<int>();
        Random random = new Random();
        while (lotteryNumbers.Count < numberCount)
        {
            lotteryNumbers.Add(random.Next(1, maxNumber + 1));
        }

        // Display the generated numbers
        Console.WriteLine("\nYour lottery numbers are:");
        foreach (int number in lotteryNumbers)
        {
            Console.Write(number + " ");
        }
        Console.WriteLine();
    }
}

Explanation of the Code

  1. Program Structure:
    • The program uses a menu-driven interface, allowing users to generate lottery numbers or exit the application.
    • It ensures user input is valid (e.g., positive integers).

Key Methods

1. Main Method:

  • Displays the main menu and processes user input.
  • Uses a switch statement to handle the user’s choice.
  • Exits the program if the user selects “Exit.”
Console.WriteLine("1. Generate Lottery Numbers");
Console.WriteLine("2. Exit");
string choice = Console.ReadLine();

2. GenerateLotteryNumbers Method:

This method is the core of the program, performing the following steps:

  1. Input Validation:
    • Prompts the user to input the number of lottery numbers (numberCount) and the maximum number in the range (maxNumber).
    • Validates inputs using int.TryParse to ensure they are positive integers.
    if (!int.TryParse(Console.ReadLine(), out int numberCount) || numberCount <= 0)
    {
        Console.WriteLine("Invalid input. Please enter a positive integer.");
        return;
    }
    
  2. Generate Unique Random Numbers:
    • Uses a HashSet<int> to store unique lottery numbers.
    • A while loop ensures the required number of unique random numbers is generated.
    • The Random class generates random numbers within the range [1, maxNumber].
    HashSet<int> lotteryNumbers = new HashSet<int>();
    Random random = new Random();
    while (lotteryNumbers.Count < numberCount)
    {
        lotteryNumbers.Add(random.Next(1, maxNumber + 1));
    }
    
  3. Display Results:
    • Iterates through the HashSet<int> and displays the generated numbers.
    Console.WriteLine("Your lottery numbers are:");
    foreach (int number in lotteryNumbers)
    {
        Console.Write(number + " ");
    }
    Console.WriteLine();
    

Input/Output Example

Example 1: Generating Lottery Numbers

Input:

Enter the number of lottery numbers to generate: 6
Enter the maximum number in the range: 49

Output:

Your lottery numbers are:
12 34 5 22 19 47

Validation and Edge Cases

  1. Ensure Valid Input:
    • Inputs like negative numbers, non-integer values, or numbers exceeding the range are rejected.

    Example:

    Enter the number of lottery numbers to generate: -5
    Invalid input. Please enter a positive integer.
    
  2. Ensure Unique Numbers:
    • The HashSet<int> ensures no duplicate numbers are generated.
  3. Range Validation:
    • Ensures the number of lottery numbers does not exceed the range.

    Example:

    Enter the number of lottery numbers to generate: 10
    Enter the maximum number in the range: 6
    The number of lottery numbers cannot exceed the range of numbers.
    

Features

  1. Randomized and Unique Numbers:
    • Uses the Random class and HashSet<int> to ensure uniqueness.
  2. Customizable Settings:
    • Users can specify the number of lottery numbers and the range.
  3. Input Validation:
    • Ensures the program handles invalid inputs gracefully.
  4. Reusable Design:
    • The modular design makes it easy to extend the program with additional features.

Ideas for Enhancement

  1. Add Save Option:
    • Save generated numbers to a file for future reference.
  2. Simulate Real Lottery Rules:
    • Include predefined lottery systems (e.g., Powerball, Mega Millions).
  3. GUI Version:
    • Use Windows Forms or WPF to create a graphical interface for the lottery number generator.
  4. Multiple Sets:
    • Allow users to generate multiple sets of numbers in one session.

This C# Lottery Number Generator provides a solid foundation for generating random, unique numbers for lottery-style applications. The modular approach and input validation make it robust and easy to expand!

 

You may also like