Home | History | Annotate | Download | only in eh
      1 /***********************************************************************************
      2   random_number.cpp
      3 
      4  * Copyright (c) 1997
      5  * Mark of the Unicorn, Inc.
      6  *
      7  * Permission to use, copy, modify, distribute and sell this software
      8  * and its documentation for any purpose is hereby granted without fee,
      9  * provided that the above copyright notice appear in all copies and
     10  * that both that copyright notice and this permission notice appear
     11  * in supporting documentation.  Mark of the Unicorn makes no
     12  * representations about the suitability of this software for any
     13  * purpose.  It is provided "as is" without express or implied warranty.
     14 
     15 ***********************************************************************************/
     16 #include "random_number.h"
     17 #include "Prefix.h"
     18 #if defined (EH_NEW_HEADERS)
     19 # include <functional>
     20 # include <cstdlib>
     21 #else
     22 # include <function.h>
     23 # include <stdlib.h>
     24 #endif
     25 
     26 unsigned random_number( size_t range )
     27 {
     28 #if !defined( __SGI_STL )
     29   if (range == 0) return 0;
     30   return (unsigned)(EH_STD::rand() + EH_STD::rand()) % range;
     31 #else
     32   static EH_STD::subtractive_rng rnd;
     33         if (range==0) return 0;
     34         return rnd(range);
     35 #endif
     36 }
     37 
     38 // default base for random container sizes
     39 unsigned random_base = 1000;
     40