queso-0.57.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
RngBoost.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // QUESO - a library to support the Quantification of Uncertainty
5 // for Estimation, Simulation and Optimization
6 //
7 // Copyright (C) 2008-2017 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #include <queso/RngBoost.h>
26 
27 #include <boost/random.hpp>
28 #include <boost/math/distributions.hpp>
29 
30 namespace QUESO {
31 
33 RngBoost::RngBoost(int seed, int worldRank)
34  :
35  RngBase(seed,worldRank)
36  //m_rng(seed)
37 {
38  resetSeed(seed);
39 //TODO Find a suitable test for here; Kemelli todo
40 
41 // m_worldRank,
42 // "RngBoos::constructor()",
43 // "Kemelli todo: boost rng");
44 }
45 
46 // Destructor ---------------------------------------
48 {
49  //this function does nothing
50 }
51 
52 // Sampling methods ---------------------------------
53 void
54 RngBoost::resetSeed(int newSeed)
55 {
56  m_rng.seed(newSeed);
57 
58  return;
59 }
60 
61 // --------------------------------------------------
62 double
64 {
65  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
66  return zeroone();
67 }
68 
69 // --------------------------------------------------
70 double
71 RngBoost::gaussianSample(double stdDev) const
72 {
73  double mean = 0.; //it will be added conveniently later
74  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
75  boost::math::normal_distribution<double> gaussian_dist(mean, stdDev);
76  return quantile(gaussian_dist, zeroone());
77 }
78 
79 // --------------------------------------------------
80 double
81 RngBoost::betaSample(double alpha, double beta) const
82 {
83  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
84  boost::math::beta_distribution<double> beta_dist(alpha, beta);
85  return quantile(beta_dist, zeroone());
86 }
87 
88 // --------------------------------------------------
89 double
90 RngBoost::gammaSample(double a, double b) const
91 {
92  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
93  boost::math::gamma_distribution<double> gamma_dist(a,b);
94  return quantile(gamma_dist, zeroone());
95 }
96 
97 } // End namespace QUESO
double gammaSample(double a, double b) const
Samples a value from a Gamma distribution. Support: [0,infinity).
Definition: RngBoost.C:90
double betaSample(double alpha, double beta) const
Samples a value from a Beta distribution. Support: [0,1].
Definition: RngBoost.C:81
double uniformSample() const
Samples a value from a uniform distribution. Support: [0,1] or [a,b].
Definition: RngBoost.C:63
void resetSeed(int newSeed)
Resets the seed with value newSeed.
Definition: RngBoost.C:54
Class for random number generation (base class for either GSL or Boost RNG).
Definition: RngBase.h:45
~RngBoost()
Destructor.
Definition: RngBoost.C:47
double gaussianSample(double stdDev) const
Definition: RngBoost.C:71
RngBoost()
Default Constructor: it should not be used.
boost::mt19937 m_rng
Random number generator from class boost::mt19937.
Definition: RngBoost.h:109

Generated on Tue Jun 5 2018 19:48:55 for queso-0.57.1 by  doxygen 1.8.5