00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00032 #ifndef SCYTHE_WRAPPED_GENERATOR_H
00033 #define SCYTHE_WRAPPED_GENERATOR_H
00034
00035 #ifdef SCYTHE_COMPILE_DIRECT
00036 #include "rng.h"
00037 #else
00038 #include "scythestat/rng.h"
00039 #endif
00040
00041 namespace scythe {
00042
00059 template <typename ENGINE>
00060 class wrapped_generator: public rng<wrapped_generator<ENGINE> >
00061 {
00062 public:
00063
00077 wrapped_generator (ENGINE& e)
00078 : rng<wrapped_generator<ENGINE> > (),
00079 engine (e)
00080 {}
00081
00094 wrapped_generator(const wrapped_generator& wg)
00095 : rng<wrapped_generator<ENGINE> > (),
00096 engine (wg.engine)
00097 {}
00098
00109 inline double runif()
00110 {
00111 return engine();
00112 }
00113
00114
00115
00116
00117
00139 template <matrix_order O, matrix_style S>
00140 inline Matrix<double,O> runif(unsigned int rows,
00141 unsigned int cols)
00142 {
00143 return rng<wrapped_generator<ENGINE> >::runif<O, S>(rows, cols);
00144 }
00145
00167 Matrix<double,Col,Concrete> runif (unsigned int rows,
00168 unsigned int cols)
00169 {
00170 return rng<wrapped_generator<ENGINE> >::runif<Col,Concrete>(rows,
00171 cols);
00172 }
00173
00174 protected:
00175 ENGINE& engine;
00176 };
00177 }
00178
00179 #endif