12 #ifndef ROOT_TRandomGen
13 #define ROOT_TRandomGen
45 template<
class Engine>
46 class TRandomGen :
public TRandom {
53 TRandomGen(ULong_t seed=1) {
54 fEngine.SetSeed(seed);
55 SetName(TString::Format(
"Random_%s", std::string(fEngine.Name()).c_str()));
56 SetTitle(TString::Format(
"Random number generator: %s", std::string(fEngine.Name()).c_str()));
58 virtual ~TRandomGen() {}
60 virtual Double_t Rndm( ) {
return fEngine(); }
61 virtual void RndmArray(Int_t n, Float_t *array) {
62 for (
int i = 0; i < n; ++i) array[i] = fEngine();
64 virtual void RndmArray(Int_t n, Double_t *array) {
65 for (
int i = 0; i < n; ++i) array[i] = fEngine();
67 virtual void SetSeed(ULong_t seed=0) {
68 fEngine.SetSeed(seed);
71 ClassDef(TRandomGen,1)
80 #ifdef DEFINE_TEMPL_INSTANCE
82 extern template class TRandomGen<ROOT::Math::MixMaxEngine<240,0>>;
83 extern template class TRandomGen<ROOT::Math::MixMaxEngine<256,2>>;
84 extern template class TRandomGen<ROOT::Math::MixMaxEngine<256,4>>;
85 extern template class TRandomGen<ROOT::Math::MixMaxEngine<17,0>>;
86 extern template class TRandomGen<ROOT::Math::MixMaxEngine<17,1>>;
88 extern template class TRandomGen<ROOT::Math::StdEngine<std::mt19937_64> >;
89 extern template class TRandomGen<ROOT::Math::StdEngine<std::ranlux48> >;
100 typedef TRandomGen<ROOT::Math::MixMaxEngine<240,0>> TRandomMixMax;
111 typedef TRandomGen<ROOT::Math::MixMaxEngine<17,0>> TRandomMixMax17;
125 typedef TRandomGen<ROOT::Math::MixMaxEngine<256,2>> TRandomMixMax256;
133 typedef TRandomGen<ROOT::Math::StdEngine<std::mt19937_64> > TRandomMT64;
141 typedef TRandomGen<ROOT::Math::StdEngine<std::ranlux48> > TRandomRanlux48;