Mind that this is my first actual program in C++ and I tried to prepare for any possible input. Also the reason I included `static_cast<void>(generator(range))` is to throw away the first random value because I read on [LearnCpp.com](https://learncpp.com) that throwing away the first is a common practice to produce more random results. Anyways here is the code, all suggestions are welcome. #include <iostream> #include <limits> #include <random> bool validateInput(int input) { using namespace std; if (1 <= input && input <= 100) return true; else if (!input) return false; else return false; } int generateRandomNumber() { std::random_device dev; std::mt19937_64 range(dev()); std::uniform_int_distribution<std::mt19937_64::result_type> generator(1, 100); static_cast<void>(generator(range)); return static_cast<int>(generator(range)); } bool placement(int input, int target) { using namespace std; if (input > target) { cout << "Guess is too high."; return false; } else if (input < target) { cout << "Guess is too low."; return false; } else { cout << "Guess is correct!"; return true; } } int main() { using namespace std; cout << "You have 7 guesses to guess what number I am thinking of between 1 and 100.\n"; int winning_num{ generateRandomNumber() }; static int tries{ 1 }; do { int num; cout << "\nGuess#" << tries << ": Enter a number -> "; cin >> num; if (!cin) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); continue; } cin.ignore(numeric_limits<streamsize>::max(), '\n'); if (validateInput(num)) ; else { continue; } if (!placement(num, winning_num)) { cout << "\nIncorrect!\n"; ++tries; } else { cout << "\nCorrect!\n"; exit(0); } } while (tries <= 7); cout << "\nYou did not guess the number in the alloted amount of guesses :(\nTry Again!\n"; }