It doesn't output the proper number of pseudorandom numbers. Well, sometimes it does and sometimes it doesn't.
One example can be seen when you enter 9 at the first prompt and 8 at the second. Or 8 at the first and 3 at the second.
Code:#include <iostream> //opens iostream as a standard C++ included file #include <conio.h> //opens conio.h for use of getch() and system() commands #include <ctime> //opens ctime for the seeding of rand() using time #include <cstdlib> //opens cstdlib for rand() function #include <algorithm> //opens algorithm for sort() function #include <set> //opens set for the use of sets using namespace std; //uses the standard C++ namespace int main() //opens the main (and only) function { int maxnum; //sets the variable "maxnum" (the highest random number that will be displayed) as an integer int numofnums; //sets the variable "numofnums" (the number of random numbers that will be displayed) as an integer int watcher; //sets the variable "watcher" (counter) as in integer int endopt; //sets the variable "endopt" (option to repeat the program or exit the program) as in integer int i; //sets the variable i as an integer, but i is gone now, I think int randnum; //sets the variable "randnum" (used to add a random number into the set) to and integer srand(time(0)); //seeds rand() by using the system time; exact outcome is based on OS cout << "Welcome to the Random Number Generator." << endl; cout << "Press any key to continue." << endl; getch(); //pauses the program until the user hits any key system("cls"); //a system call to clear the screen step1: maxnum = 0; numofnums = 0; watcher = 0; endopt = 0; i = 0; randnum = 0; cout << "Enter the maximum number in your range of random numbers." << endl; cout << "This number will be the highest possible number that can be output." << endl; cin >> maxnum; while (maxnum <= 1) //an error check for an invalid maximum number (maxnum) { system("cls"); //a system call to clear the screen cout << "\aYou entered an invalid number." << endl; cout << "The highest possible number must be greater than 1." << endl; cout << "Please try again. Enter the highest possible random number." << endl; cin >> maxnum; } system("cls"); //a system call to clear the screen cout << "Enter the number of random numbers to display." << endl; cout << "This will be the number of random numbers that you will see." << endl; cin >> numofnums; while (numofnums <= 0) //an error check for an invalid number of random numbers { system("cls"); //a system call to clear the screen cout << "\aYou entered an invalid number." << endl; cout << "The number of displayed numbers must be greater than 0." << endl; cout << "Please try again. Enter the number of random numbers to display." << endl; cin >> numofnums; } if (numofnums >= maxnum) { cout << "You entered invalid numbers." << endl; cout << "To prevent double or triple numbers, the range of the random numbers \n must be greater than the total number of random numbers displayed." << endl; cout << "Press any key to try again." << endl; getch(); //a "pause" command system("cls"); //a system call to clear the screen goto step1; //brings the user back to the beginning to try again...might replace this goto in the future } else { set<int, less<int> > randSet; //creates the set watcher = 0; //sets the counter to 0 to prevent problems while (watcher < (numofnums)) { randnum = (rand() % (maxnum + 1)); randSet.insert(randnum); //fills the set with values watcher = watcher + 1; //adds one to "watcher", which is the counter } cout << "Your random numbers are..." << endl; set<int>::iterator iter; for (iter = randSet.begin(); iter != randSet.end(); iter++) cout << *iter << endl; do { cout << "\n"; //newline cout << "Enter 1 to run again or 2 to exit." << endl; cin >> endopt; system("cls"); //a system call to clear the screen switch (endopt) { case 1: goto step1; break; case 2: return 0; break; } } while (endopt != 1 && endopt != 2); } }