继承 TRandom


Ranlux random number generator class (periodicity > 10**14)

/// Luxury level is set in the same way as the original FORTRAN routine.
///  level 0  (p=24): equivalent to the original RCARRY of Marsaglia
///           and Zaman, very long period, but fails many tests.
///  level 1  (p=48): considerable improvement in quality over level 0,
///           now passes the gap test, but still fails spectral test.
///  level 2  (p=97): passes all known tests, but theoretically still
///           defective.
///  level 3  (p=223): DEFAULT VALUE.  Any theoretically possible
///           correlations have very small chance of being observed.
///  level 4  (p=389): highest possible luxury, all 24 bits chaotic.

   TRandom1(UInt_t seed, Int_t lux = 3 );
   TRandom1(Int_t rowIndex, Int_t colIndex, Int_t lux );
   virtual ~TRandom1();
   virtual  Int_t    GetLuxury() const {return fLuxury;}
                    // Get the current seed (first element of the table)
   virtual  UInt_t   GetSeed() const { return  UInt_t ( fFloatSeedTable[0] /  fMantissaBit24 ) ; }
                    // Gets the current seed.
   const UInt_t     *GetTheSeeds() const {return fTheSeeds;}
                     // Gets the current array of seeds.
   static   void     GetTableSeeds(UInt_t* seeds, Int_t index);///static function returning the table of seeds
                     // Gets back seed values stored in the table, given the index.
   virtual  Double_t Rndm(Int_t i=0);//(0,1]均匀分布
   virtual  void     RndmArray(Int_t size, Float_t *vect);///return an array of random numbers in ]0,1]
   virtual  void     RndmArray(Int_t size, Double_t *vect);///return an array of random numbers in ]0,1[
   virtual  void     SetSeed2(UInt_t seed, Int_t lux=3);
/// The initialisation is carried out using a Multiplicative
/// Congruential generator using formula constants of L'Ecuyer
/// as described in "A review of pseudorandom number generators"
/// (Fred James) published in Computer Physics Communications 60 (1990)
/// pages 329-344
/// modified for the case of seed = 0. In that case a random 64 bits seed based on
/// TUUID (using TRandom3(0) ) is generated in order to have a unique seed

                     // Sets the state of the algorithm according to seed.
					 virtual  void     SetSeeds(const UInt_t * seeds, Int_t lux=3);

                     // Sets the state of the algorithm according to the zero terminated
                     // array of seeds. Only the first seed is used.
   virtual  void     SetSeed(UInt_t seed);