ESyS-Particle  4.0.1
Rng.hpp
00001 
00002 //                                                         //
00003 // Copyright (c) 2003-2011 by The University of Queensland //
00004 // Earth Systems Science Computational Centre (ESSCC)      //
00005 // http://www.uq.edu.au/esscc                              //
00006 //                                                         //
00007 // Primary Business: Brisbane, Queensland, Australia       //
00008 // Licensed under the Open Software License version 3.0    //
00009 // http://www.opensource.org/licenses/osl-3.0.php          //
00010 //                                                         //
00012 
00013 
00014 namespace esys
00015 {
00016   namespace lsm
00017   {
00018     template <typename TmplRng>
00019     UniformRng<TmplRng>::UniformRng(double minRn, double maxRn)
00020       : m_rng(),
00021         m_uniform(minRn, maxRn),
00022         m_generator(m_rng, m_uniform)
00023     {
00024     }
00025 
00026     template <typename TmplRng>
00027     double UniformRng<TmplRng>::operator()()
00028     {
00029       return m_generator();
00030     }
00031 
00032     template <typename TmplRng>
00033     void UniformRng<TmplRng>::seed()
00034     {
00035       m_rng.seed();
00036     }
00037 
00038     template <typename TmplRng>
00039     template <typename Tmpl>
00040     void UniformRng<TmplRng>::seed(Tmpl &s)
00041     {
00042       m_rng.seed(s);
00043     }
00044 
00045     template <typename TmplRng>
00046     template <typename TmplIt>
00047     void UniformRng<TmplRng>::seed(TmplIt first, TmplIt last)
00048     {
00049       m_rng.seed(first, last);
00050     }
00051   }
00052 }