SOURCE FILE: 6.12RandDoubles.cpp


// Example 6.12. Test program for random_double and random_double_range   
   
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>   
   
int main(void)   
{   
   double random_double(void);   
   double random_double_range(double LowerBound, double UpperBound);   
   
   int i = 0;   
   
   cout << "Random doubling point numbers in range\n";
   cout << setw(20) << "0-1" << setw(20) << "3-7" << "\n\n";   
   while (i < 10)   
   {
      cout << setw(20) << random_double() 
           << setw(20) << random_double_range(3, 7) << endl;
      i++;
   }

   return 0;
}   
   
//   
// Function to return a random double between 0 and 1     
// Pre:  The generator is seeded.   
// Post: A random double greater than or equal to 0      
//       and less than 1 has been returned.   
//    
    
double random_double(void)    
{   
   return ( rand() / (double(RAND_MAX) + 1) );
}   
   
//   
// Function to generate a random doubling point number    
// between LowerBound and UpperBound   
// Pre:  LowerBound and UpperBound are of type double with   
//       LowerBound < UpperBound.  The generator is seeded.   
// Post: A random double greater than or equal to LowerBound      
//       and less than UpperBound has been returned.   
//    
   
double random_double_range(double LowerBound, double UpperBound)   
{   
   double random_0_1;   // random number between 0 and 1
   
   random_0_1 = rand() / (double(RAND_MAX) + 1);
   return ((UpperBound - LowerBound) *  random_0_1 
         + LowerBound);
}