69#ifdef R__COMPLETE_MEM_TERMINATION
71 struct TRandomCleanup {
74 static TRandomCleanup gCleanupRandom;
89 SetTitle(
"Random number generator: Mersenne Twister");
111 if (
y)
return ((
Double_t)
y * 2.3283064365386963e-10);
126 const Int_t kM = 397;
127 const Int_t kN = 624;
128 const UInt_t kTemperingMaskB = 0x9d2c5680;
129 const UInt_t kTemperingMaskC = 0xefc60000;
130 const UInt_t kUpperMask = 0x80000000;
131 const UInt_t kLowerMask = 0x7fffffff;
132 const UInt_t kMatrixA = 0x9908b0df;
137 for (i = 0; i < kN-kM; i++) {
138 y = (
fMt[i] & kUpperMask) | (
fMt[i+1] & kLowerMask);
139 fMt[i] =
fMt[i+kM] ^ (
y >> 1) ^ ((
y & 0x1) ? kMatrixA : 0x0);
142 for (; i < kN-1; i++) {
143 y = (
fMt[i] & kUpperMask) | (
fMt[i+1] & kLowerMask);
144 fMt[i] =
fMt[i+kM-kN] ^ (
y >> 1) ^ ((
y & 0x1) ? kMatrixA : 0x0);
147 y = (
fMt[kN-1] & kUpperMask) | (
fMt[0] & kLowerMask);
148 fMt[kN-1] =
fMt[kM-1] ^ (
y >> 1) ^ ((
y & 0x1) ? kMatrixA : 0x0);
154 y ^= ((
y << 7 ) & kTemperingMaskB);
155 y ^= ((
y << 15) & kTemperingMaskC);
178 const Int_t kM = 397;
179 const Int_t kN = 624;
180 const UInt_t kTemperingMaskB = 0x9d2c5680;
181 const UInt_t kTemperingMaskC = 0xefc60000;
182 const UInt_t kUpperMask = 0x80000000;
183 const UInt_t kLowerMask = 0x7fffffff;
184 const UInt_t kMatrixA = 0x9908b0df;
190 for (i=0; i < kN-kM; i++) {
191 y = (
fMt[i] & kUpperMask) | (
fMt[i+1] & kLowerMask);
192 fMt[i] =
fMt[i+kM] ^ (
y >> 1) ^ ((
y & 0x1) ? kMatrixA : 0x0);
195 for ( ; i < kN-1 ; i++) {
196 y = (
fMt[i] & kUpperMask) | (
fMt[i+1] & kLowerMask);
197 fMt[i] =
fMt[i+kM-kN] ^ (
y >> 1) ^ ((
y & 0x1) ? kMatrixA : 0x0);
200 y = (
fMt[kN-1] & kUpperMask) | (
fMt[0] & kLowerMask);
201 fMt[kN-1] =
fMt[kM-1] ^ (
y >> 1) ^ ((
y & 0x1) ? kMatrixA : 0x0);
207 y ^= ((
y << 7 ) & kTemperingMaskB );
208 y ^= ((
y << 15) & kTemperingMaskC );
212 array[k] =
Double_t(
y * 2.3283064365386963e-10);
237 for(
Int_t i=1; i<624; i++) {
238 fMt[i] = (1812433253 * (
fMt[i-1] ^ (
fMt[i-1] >> 30)) + i );
247 for (
Int_t i = 0; i< 624; i++) {
248 fMt[i] =
static_cast<UInt_t> (4294967296.*
r.Rndm());
int Int_t
Signed integer 4 bytes (int)
short Version_t
Class version identifier (short)
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
float Float_t
Float 4 bytes (float)
double Double_t
Double 8 bytes.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
R__EXTERN TRandom * gRandom
Buffer base class used for serializing objects.
virtual Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr)=0
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=nullptr)=0
virtual Int_t ReadStaticArray(Bool_t *b)=0
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void SetName(const char *name)
Set the name of the TNamed.
Random number generator class based on the maximally equidistributed combined Tausworthe generator by...
Random number generator class based on M.
Double_t Rndm() override
Machine independent random number generator.
void RndmArray(Int_t n, Float_t *array) override
Return an array of n random numbers uniformly distributed in ]0, 1[.
TClass * IsA() const override
TRandom3(UInt_t seed=4357)
Default constructor.
result_type operator()() override
Return a random 32-bit integer, advancing the generator state by one step.
void Streamer(TBuffer &) override
Streamer for an object of class TRandom3.
~TRandom3() override
Default destructor.
void SetSeed(ULong_t seed=0) override
Set the random generator sequence.
This is the base class for the ROOT Random number generators.
virtual void SetSeed(ULong_t seed=0)
Set the random generator seed.
void Streamer(TBuffer &) override
Stream an object of class TObject.