12#ifndef ROOT_Math_RanluxppEngine
13#define ROOT_Math_RanluxppEngine
23template <
int w,
int p,
int u = 0>
31 std::unique_ptr<ImplType>
fImpl;
50 static const char *
Name() {
return "RANLUX++"; }
65 std::unique_ptr<ImplType>
fImpl;
84 static const char *
Name() {
return "RanluxppCompatJames"; }
123 static const char *
Name() {
return "RanluxppCompatGslRanlxs"; }
160 static const char *
Name() {
return "RanluxppCompatGslRanlxd"; }
170template <
int w,
int p>
198 static const char *
Name() {
return "RanluxppCompatLuescherRanlxs"; }
235 static const char *
Name() {
return "RanluxppCompatLuescherRanlxd"; }
256 double Rndm()
override;
265 void Skip(uint64_t
n);
268 static const char *
Name() {
return "RanluxppCompatStdRanlux24"; }
284 double Rndm()
override;
293 void Skip(uint64_t
n);
296 static const char *
Name() {
return "RanluxppCompatStdRanlux48"; }
TRObject operator()(const T1 &t1) const
Compatibility engine for gsl_rng_ranlxd* from the GNU Scientific Library.
~RanluxppCompatEngineGslRanlxd() override
uint64_t IntRndm()
Generate a random integer value with 48 bits.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
std::unique_ptr< ImplType > fImpl
void Skip(uint64_t n)
Skip n random numbers without generating them.
static const char * Name()
Get name of the generator.
double Rndm() override
Generate a floating point random number with 48 bits of randomness.
RanluxppEngineImpl< 48, p > ImplType
RanluxppCompatEngineGslRanlxd(uint64_t seed=1)
double operator()()
Generate a floating point random number (non-virtual method).
Compatibility engine for gsl_rng_ranlxs* from the GNU Scientific Library.
static const char * Name()
Get name of the generator.
RanluxppEngineImpl< 24, p > ImplType
~RanluxppCompatEngineGslRanlxs() override
double operator()()
Generate a floating point random number (non-virtual method).
double Rndm() override
Generate a floating point random number with 24 bits of randomness.
void Skip(uint64_t n)
Skip n random numbers without generating them.
RanluxppCompatEngineGslRanlxs(uint64_t seed=1)
uint64_t IntRndm()
Generate a random integer value with 24 bits.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
std::unique_ptr< ImplType > fImpl
double operator()()
Generate a floating point random number (non-virtual method).
void Skip(uint64_t n)
Skip n random numbers without generating them.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
RanluxppEngineImpl< 24, p > ImplType
double Rndm() override
Generate a floating point random number with 24 bits of randomness.
uint64_t IntRndm()
Generate a random integer value with 24 bits.
std::unique_ptr< ImplType > fImpl
RanluxppCompatEngineJames(uint64_t seed=314159265)
~RanluxppCompatEngineJames() override
static const char * Name()
Get name of the generator.
Compatibility engine for Lüscher's ranlxd implementation written in C.
RanluxppCompatEngineLuescherImpl< 48, p > ImplType
RanluxppCompatEngineLuescherRanlxd(uint64_t seed=314159265)
~RanluxppCompatEngineLuescherRanlxd() override
std::unique_ptr< ImplType > fImpl
uint64_t IntRndm()
Generate a random integer value with 48 bits.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
static const char * Name()
Get name of the generator.
void Skip(uint64_t n)
Skip n random numbers without generating them.
double Rndm() override
Generate a floating point random number with 48 bits of randomness.
double operator()()
Generate a floating point random number (non-virtual method).
Compatibility engine for Lüscher's ranlxs implementation written in C.
double operator()()
Generate a floating point random number (non-virtual method).
std::unique_ptr< ImplType > fImpl
RanluxppCompatEngineLuescherRanlxs(uint64_t seed=314159265)
static const char * Name()
Get name of the generator.
double Rndm() override
Generate a floating point random number with 24 bits of randomness.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
~RanluxppCompatEngineLuescherRanlxs() override
void Skip(uint64_t n)
Skip n random numbers without generating them.
RanluxppCompatEngineLuescherImpl< 24, p > ImplType
uint64_t IntRndm()
Generate a random integer value with 24 bits.
std::unique_ptr< ImplType > fImpl
static const char * Name()
Get name of the generator.
RanluxppCompatEngineStdRanlux24(uint64_t seed=19780503)
void Skip(uint64_t n)
Skip n random numbers without generating them.
RanluxppEngineImpl< 24, 223, 23 > ImplType
uint64_t IntRndm()
Generate a random integer value with 24 bits.
double Rndm() override
Generate a floating point random number with 24 bits of randomness.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
~RanluxppCompatEngineStdRanlux24() override
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
RanluxppCompatEngineStdRanlux48(uint64_t seed=19780503)
void Skip(uint64_t n)
Skip n random numbers without generating them.
static const char * Name()
Get name of the generator.
std::unique_ptr< ImplType > fImpl
~RanluxppCompatEngineStdRanlux48() override
uint64_t IntRndm()
Generate a random integer value with 48 bits.
double Rndm() override
Generate a floating point random number with 48 bits of randomness.
RanluxppEngineImpl< 48, 2 *389, 11 > ImplType
Implementation of the RANLUX++ generator.
uint64_t IntRndm()
Generate a random integer value with 48 bits.
double Rndm() override
Generate a double-precision random number with 48 bits of randomness.
void Skip(uint64_t n)
Skip n random numbers without generating them.
void SetSeed(uint64_t seed)
Initialize and seed the state of the generator.
~RanluxppEngine() override
double operator()()
Generate a double-precision random number (non-virtual method).
RanluxppEngine(uint64_t seed=314159265)
RanluxppEngineImpl< 48, p > ImplType
static const char * Name()
Get name of the generator.
std::unique_ptr< ImplType > fImpl
RanluxppCompatEngineLuescherRanlxs< 404 > RanluxppCompatEngineLuescherRanlxs1
RanluxppCompatEngineGslRanlxs< 794 > RanluxppCompatEngineGslRanlxs2
RanluxppCompatEngineGslRanlxd< 404 > RanluxppCompatEngineGslRanlxd1
RanluxppCompatEngineGslRanlxs< 218 > RanluxppCompatEngineGslRanlxs0
RanluxppCompatEngineGslRanlxd< 794 > RanluxppCompatEngineGslRanlxd2
RanluxppEngine< 24 > RanluxppEngine24
RanluxppCompatEngineJames< 223 > RanluxppCompatEngineJamesP3
Compatibility engine for original RANLUX implementation by James, luxury level 3 (p = 223).
RanluxppCompatEngineGslRanlxs< 404 > RanluxppCompatEngineGslRanlxs1
RanluxppCompatEngineLuescherRanlxd< 404 > RanluxppCompatEngineLuescherRanlxd1
RanluxppEngine< 2048 > RanluxppEngine2048
RanluxppCompatEngineLuescherRanlxd< 794 > RanluxppCompatEngineLuescherRanlxd2
RanluxppCompatEngineLuescherRanlxs< 794 > RanluxppCompatEngineLuescherRanlxs2
RanluxppCompatEngineJames< 389 > RanluxppCompatEngineJamesP4
Compatibility engine for original RANLUX implementation by James, luxury level 4 (p = 389).
RanluxppCompatEngineLuescherRanlxs< 218 > RanluxppCompatEngineLuescherRanlxs0