694
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
- 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:
- 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; }
- 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)); }
- 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
- 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.
- Ensure Unique Numbers:
- The HashSet<int> ensures no duplicate numbers are generated.
- 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
- Randomized and Unique Numbers:
- Uses the Random class and HashSet<int> to ensure uniqueness.
- Customizable Settings:
- Users can specify the number of lottery numbers and the range.
- Input Validation:
- Ensures the program handles invalid inputs gracefully.
- Reusable Design:
- The modular design makes it easy to extend the program with additional features.
Ideas for Enhancement
- Add Save Option:
- Save generated numbers to a file for future reference.
- Simulate Real Lottery Rules:
- Include predefined lottery systems (e.g., Powerball, Mega Millions).
- GUI Version:
- Use Windows Forms or WPF to create a graphical interface for the lottery number generator.
- 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!