queso-0.53.0
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-2015 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 #include <mpi.h>
27 
28 namespace QUESO {
29 
31 RngBoost::RngBoost(int seed, int worldRank)
32  :
33  RngBase(seed,worldRank)
34  //m_rng(seed)
35 {
36  resetSeed(seed);
37 //TODO Find a suitable test for here; Kemelli todo
38 
39 // m_worldRank,
40 // "RngBoos::constructor()",
41 // "Kemelli todo: boost rng");
42 }
43 
44 // Destructor ---------------------------------------
46 {
47  //this function does nothing
48 }
49 
50 // Sampling methods ---------------------------------
51 void
52 RngBoost::resetSeed(int newSeed)
53 {
54  m_rng.seed(newSeed);
55 
56  return;
57 }
58 
59 // --------------------------------------------------
60 double
62 {
63  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
64  return zeroone();
65 }
66 
67 // --------------------------------------------------
68 double
69 RngBoost::gaussianSample(double stdDev) const
70 {
71  double mean = 0.; //it will be added conveniently later
72  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
73  boost::math::normal_distribution<double> gaussian_dist(mean, stdDev);
74  return quantile(gaussian_dist, zeroone());
75 }
76 
77 // --------------------------------------------------
78 double
79 RngBoost::betaSample(double alpha, double beta) const
80 {
81  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
82  boost::math::beta_distribution<double> beta_dist(alpha, beta);
83  return quantile(beta_dist, zeroone());
84 }
85 
86 // --------------------------------------------------
87 double
88 RngBoost::gammaSample(double a, double b) const
89 {
90  static boost::uniform_01<boost::mt19937> zeroone(m_rng);
91  boost::math::gamma_distribution<double> gamma_dist(a,b);
92  return quantile(gamma_dist, zeroone());
93 }
94 
95 } // End namespace QUESO
double gammaSample(double a, double b) const
Samples a value from a Gamma distribution. Support: [0,infinity).
Definition: RngBoost.C:88
~RngBoost()
Destructor.
Definition: RngBoost.C:45
double betaSample(double alpha, double beta) const
Samples a value from a Beta distribution. Support: [0,1].
Definition: RngBoost.C:79
double gaussianSample(double stdDev) const
Definition: RngBoost.C:69
double uniformSample() const
Samples a value from a uniform distribution. Support: [0,1] or [a,b].
Definition: RngBoost.C:61
void resetSeed(int newSeed)
Resets the seed with value newSeed.
Definition: RngBoost.C:52
Class for random number generation (base class for either GSL or Boost RNG).
Definition: RngBase.h:45
RngBoost()
Default Constructor: it should not be used.
boost::mt19937 m_rng
Random number generator from class boost::mt19937.
Definition: RngBoost.h:110

Generated on Thu Jun 11 2015 13:52:31 for queso-0.53.0 by  doxygen 1.8.5