#include <iostream>
#include <random>
#include <set>
#include <vector>
#include <algorithm> // sort
/*
Generate random Powerball lottery numbers:
- 5 distinct numbers from 1–69
- 1 Powerball number from 1–26
This program uses:
- <random> for modern C++ random number generation
- std::set to ensure unique main numbers
- std::uniform_int_distribution for clean, safe RNG
*/
/*
generateMainNumbers():
Generates 5 UNIQUE numbers in the range [1, 69].
Uses std::set to automatically enforce uniqueness.
*/
std::vector<int> generateMainNumbers(std::mt19937 &rng) {
std::uniform_int_distribution<int> dist(1, 69);
std::set<int> numbers;
while (numbers.size() < 5) {
numbers.insert(dist(rng));
}
// Convert set → vector and sort for nice output
std::vector<int> result(numbers.begin(), numbers.end());
std::sort(result.begin(), result.end());
return result;
}
/*
generatePowerball():
Generates a single number in the range [1, 26].
*/
int generatePowerball(std::mt19937 &rng) {
std::uniform_int_distribution<int> dist(1, 26);
return dist(rng);
}
int main() {
// Use a high‑quality random seed
std::random_device rd;
std::mt19937 rng(rd());
// Generate numbers
std::vector<int> mainNumbers = generateMainNumbers(rng);
int powerball = generatePowerball(rng);
// Output results
std::cout << "Random Powerball numbers:\n";
std::cout << "Main numbers: ";
for (int n : mainNumbers) {
std::cout << n << " ";
}
std::cout << "\nPowerball: " << powerball << "\n";
}
/*
run:
Random Powerball numbers:
Main numbers: 15 20 25 39 61
Powerball: 18
*/