/*********************************************** * Name: random_integers.cxx * Author: Leo Liberti * Source: GNU C++ * Purpose: print out list of n random integers * Build: c++ -o random_integers random_integers.cxx * History: 120103 work started ***********************************************/ #include #include #include #include #include const int lowerBound = 0; const int upperBound = 10; // return a random number between 0 and 1 double randomDouble01(void) { double r = ((double) random() / (double) RAND_MAX); return r; } // return a random number between lower and upper double randomDouble(double lower, double upper) { assert(lower <= upper); double r = randomDouble01()*(upper - lower) + lower; return r; } // return a random integer between lower and upper int randomInt(int lower, int upper) { double r = randomDouble((double) lower, (double) upper); return (int) rint(r); } int main(int argc, char** argv) { using namespace std; // initialize randomizer struct timeval theTV; struct timezone theTZ; gettimeofday(&theTV, &theTZ); srandom(theTV.tv_usec); if (argc < 2) { cerr << argv[0] << ": prints list of random integers" << endl; cerr << argv[0] << ": error: syntax is " << argv[0] << " n" << endl; exit(1); } int n = atoi(argv[1]); if (n < 1) { cerr << argv[0] << ": error: n must be >= 1" << endl; exit(2); } for(int i = 0; i < n; i++) { cout << randomInt(lowerBound, upperBound) << endl; } return 0; }