| LSSTApplications
    20.0.0
    LSSTDataManagementBasePackage | 
 
 
 
Go to the documentation of this file.
   32 #include "boost/format.hpp" 
   34 #include "gsl/gsl_errno.h" 
   35 #include "gsl/gsl_randist.h" 
   50         ::gsl_rng_mt19937, ::gsl_rng_ranlxs0, ::gsl_rng_ranlxs1,   ::gsl_rng_ranlxs2, ::gsl_rng_ranlxd1,
 
   51         ::gsl_rng_ranlxd2, ::gsl_rng_ranlux,  ::gsl_rng_ranlux389, ::gsl_rng_cmrg,    ::gsl_rng_mrg,
 
   52         ::gsl_rng_taus,    ::gsl_rng_taus2,   ::gsl_rng_gfsr4};
 
   55         "MT19937",   
"RANLXS0", 
"RANLXS1", 
"RANLXS2", 
"RANLXD1", 
"RANLXD2", 
"RANLUX",
 
   56         "RANLUX389", 
"CMRG",    
"MRG",     
"TAUS",    
"TAUS2",   
"GFSR4"};
 
   58 char const *
const Random::_algorithmEnvVarName = 
"LSST_RNG_ALGORITHM";
 
   59 char const *
const Random::_seedEnvVarName = 
"LSST_RNG_SEED";
 
   63 void Random::initialize() {
 
   64     ::gsl_rng *rng = ::gsl_rng_alloc(_gslRngTypes[_algorithm]);
 
   71     ::gsl_rng_set(rng, useSeed);
 
   72     _rng.
reset(rng, ::gsl_rng_free);
 
   75 void Random::initialize(
std::string const &algorithm) {
 
   78         if (_algorithmNames[i] == algorithm) {
 
   97     initialize(algorithm);
 
  102     rng._rng.
reset(::gsl_rng_clone(_rng.
get()), ::gsl_rng_free);
 
  117                 (
boost::format(
"Size of given state vector (%d) does not match expected size (%d)") %
 
  134     if (names.
size() == 0) {
 
  151     if (n > ::gsl_rng_max(_rng.
get()) - ::gsl_rng_min(_rng.
get())) {
 
  154     return ::gsl_rng_uniform_int(_rng.
get(), n);
 
  
double flat(double const a, double const b)
Returns a random variate from the flat (uniform) distribution on [a, b).
double uniformPos()
Returns a uniformly distributed random double precision floating point number from the generator.
std::string getAlgorithmName() const
Reports when the result of an operation cannot be represented by the destination type.
Random(Algorithm algorithm=MT19937, unsigned long seed=1)
Creates a random number generator that uses the given algorithm to produce random numbers,...
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
std::size_t getStateSize() const
double uniform()
Returns a uniformly distributed random double precision floating point number from the generator.
unsigned long getSeed() const
unsigned long uniformInt(unsigned long n)
Returns a uniformly distributed random integer from 0 to n-1.
Algorithm getAlgorithm() const
static std::vector< std::string > const  & getAlgorithmNames()
Reports attempts to exceed implementation-defined length limits for some classes.
double chisq(double const nu)
Returns a random variate from the chi-squared distribution with nu degrees of freedom.
Algorithm
Identifiers for the list of supported algorithms.
std::string State
Accessors for the opaque state of the random number generator.
A base class for image defects.
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
@ NUM_ALGORITHMS
Number of supported algorithms.
void setState(State const &state)
A class that can be used to generate sequences of random numbers according to a number of different a...
Reports invalid arguments.
double gaussian()
Returns a gaussian random variate with mean 0 and standard deviation 1
Random deepCopy() const
Creates a deep copy of this random number generator.
double poisson(double const mu)
Returns a random variate from the poisson distribution with mean mu.