Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

generators.h

Go to the documentation of this file.
00001 
00018 #ifndef _H_GENERATORS
00019 #define _H_GENERATORS
00020 
00021 #include <cstdlib>
00022 #include <cmath>
00023 
00025 #define DEFAULT_SEED 1234567891
00026 
00028 namespace generators {
00029 
00036         class RNG {
00037 
00038         protected:
00039 
00041                 unsigned int _seed;
00042 
00043         public:
00044 
00045                 RNG();
00046 
00053                 virtual unsigned int nextInt() = 0;
00054 
00062                 virtual double nextDouble();
00063 
00069                 virtual void setSeed( unsigned int seed );
00070 
00077                 virtual unsigned int getMaximum();
00078 
00080                 virtual ~RNG() {}
00081         };
00082 
00087         class RVG {
00088 
00089         private:
00090                 RVG() {}
00091 
00092         protected:
00094                 unsigned int _dim;
00095 
00096         public:
00100                 RVG( unsigned int dim );
00101 
00103                 virtual ~RVG() {}
00104 
00108                 virtual void nextVector( double *x ) = 0;
00109 
00113                 virtual void setSeed( unsigned int seed ) = 0;
00114         };
00115 
00120         template< typename RNG_TYPE >
00121         class RVG_RNG: public generators::RVG {
00122 
00123         protected:
00125                 RNG_TYPE generator;
00126 
00127         public:
00134                 RVG_RNG( unsigned int dim ): RVG( dim ) {}
00135 
00137                 virtual ~RVG_RNG() {}
00138 
00140                 virtual void nextVector( double *x ) {
00141                         for ( unsigned int i=0; i < _dim; i++ )
00142                                 x[i] = generator.nextDouble();
00143                 }
00144 
00146                 virtual void setSeed( unsigned int seed ) {
00147                         generator.setSeed( seed );
00148                 }
00149         };
00150 
00151 };
00152 
00153 #endif
00154 

Generated on Fri Sep 4 18:03:45 2009 for LabSci RNG/MC generators by  doxygen 1.3.9.1