Logo ROOT  
Reference Guide
testrandom.C File Reference

Detailed Description

View in nbviewer Open in SWAN Performance test of all the ROOT random generator (TRandom, TRandom1, TRandom2 and TRandom3) Tests the generator TRandom3 against some ref values and creates a timing table against TRandom, TRandom1 and TRandom2.

E.g. on an an Intel Xeon Quad-core Harpertown (E5410) 2.33 GHz running Linux SLC4 64 bit and compiled with gcc 3.4

Distribution nanoseconds/call
Rndm.............. 5.000 105.000 7.000 10.000
RndmArray......... 4.000 104.000 6.000 9.000
Gaus.............. 36.000 180.000 40.000 48.000
Rannor............ 118.000 220.000 120.000 124.000
Landau............ 22.000 123.000 26.000 31.000
Exponential....... 93.000 198.000 98.000 104.000
Binomial(5,0.5)... 30.000 548.000 46.000 65.000
Binomial(15,0.5).. 75.000 1615.000 125.000 178.000
Poisson(3)........ 96.000 494.000 109.000 125.000
Poisson(10)....... 138.000 1236.000 165.000 203.000
Poisson(70)....... 818.000 1195.000 835.000 844.000
Poisson(100)...... 837.000 1218.000 849.000 864.000
GausTF1........... 83.000 180.000 87.000 88.000
LandauTF1......... 80.000 180.000 83.000 86.000
GausUNURAN........ 40.000 139.000 41.000 44.000
PoissonUNURAN(10). 85.000 271.000 92.000 102.000
PoissonUNURAN(100) 62.000 256.000 69.000 78.000

Note that this tutorial can be executed in interpreted or compiled mode

Root > .x testrandom.C
Root > .x testrandom.C++
Distribution nanoseconds/call
TRandom TRandom1 TRandom2 TRandom3 MixMax240 MixMax17 Mixmax256_0 MixMax256_2 MixMax256_4 MT_64 Ranlux48
Rndm.............. 20.000 100.000 25.000 25.000 30.000 30.000 30.000 45.000 50.000 40.000 250.000
RndmArray......... 5.000 100.000 5.000 0.000 10.000 10.000 10.000 20.000 30.000 20.000 200.000
Gaus.............. 45.000 200.000 50.000 50.000 60.000 65.000 60.000 75.000 95.000 60.000
Rannor............ 40.000 100.000 40.000 40.000 45.000 45.000 45.000 55.000 70.000 50.000
Landau............ 35.000 150.000 35.000 40.000
Exponential....... 30.000 150.000 35.000 35.000
Binomial(5,0.5)... 40.000 450.000 50.000 50.000
Binomial(15,0.5).. 75.000 1300.000 100.000 100.000
Poisson(3)........ 65.000 400.000 65.000 70.000
Poisson(10)....... 95.000 950.000 105.000 105.000
Poisson(70)....... 265.000 550.000 275.000 270.000
Poisson(100)...... 265.000 600.000 270.000 275.000
GausTF1........... 70.000 145.000 75.000 70.000
LandauTF1......... 70.000 150.000 70.000 70.000
GausUNURAN........ 20.000 105.000 20.000 25.000
PoissonUNURAN(10). 50.000 195.000 50.000 55.000
PoissonUNURAN(100) 45.000 200.000 50.000 50.000
#include <TRandom1.h>
#include <TRandom2.h>
#include <TRandom3.h>
#include <TRandomGen.h>
#include <TStopwatch.h>
#include <TF1.h>
#include <TUnuran.h>
#include <TFile.h>
void testAll() {
int i, N = 2000000;
float cpn = 1000000000./N;
int N1 = N/10; float cpn1 = cpn*10; // for TRandom1
double x,y;
TRandom *rsave = gRandom;
TRandom *r0 = new TRandom();
TRandom *r1 = new TRandom1();
TRandom *r2 = new TRandom2();
TRandom *r3 = new TRandom3();
TRandom *r4 = new TRandomMixMax();
TRandom *r5 = new TRandomMixMax17();
TRandom *r9 = new TRandomMT64();
TRandom *r10 = new TRandomRanlux48();
printf("Distribution nanoseconds/call\n");
printf(" TRandom TRandom1 TRandom2 TRandom3 MixMax240 MixMax17 Mixmax256_0 MixMax256_2 MixMax256_4 MT_64 Ranlux48\n");
sw.Start();
for (i=0;i<N;i++) {
x = r0->Rndm(i);
}
printf("Rndm.............. %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
// new random generators
sw.Start();
for (i=0;i<N;i++) {
x = r4->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r5->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r6->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r7->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r8->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r9->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r10->Rndm(i);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
printf("\n\n");
// RNDMARRAY
const int NR = 1000;
double rn[NR];
sw.Start();
for (i=0;i<N;i+=NR) {
r0->RndmArray(NR,rn);
}
printf("RndmArray......... %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i+=NR) {
r1->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i+=NR) {
r2->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=NR) {
r3->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=NR) {
r4->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=NR) {
r5->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=NR) {
r6->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=NR) {
r7->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=NR) {
r8->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=NR) {
r9->RndmArray(NR,rn);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i+=NR) {
r10->RndmArray(NR,rn);
}
printf(" %8.3f\n",sw.CpuTime()*cpn1);
// Gaus
sw.Start();
for (i=0;i<N;i++) {
x = r0->Gaus(0,1);
}
printf("Gaus.............. %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r4->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r5->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r6->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r7->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r8->Gaus(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r9->Gaus(0,1);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
// RANNOR
sw.Start();
for (i=0;i<N;i+=2) {
r0->Rannor(x,y);
}
printf("Rannor............ %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i+=2) {
r1->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i+=2) {
r2->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=2) {
r3->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=2) {
r4->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=2) {
r5->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=2) {
r6->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=2) {
r7->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=2) {
r8->Rannor(x,y);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i+=2) {
r9->Rannor(x,y);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
// Landau
sw.Start();
for (i=0;i<N;i++) {
x = r0->Landau(0,1);
}
printf("Landau............ %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Landau(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Landau(0,1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Landau(0,1);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r0->Exp(1);
}
printf("Exponential....... %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Exp(1);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Exp(1);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Exp(1);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r0->Binomial(5,0.5);
}
printf("Binomial(5,0.5)... %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Binomial(5,0.5);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Binomial(5,0.5);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Binomial(5,0.5);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r0->Binomial(15,0.5);
}
printf("Binomial(15,0.5).. %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Binomial(15,0.5);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Binomial(15,0.5);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Binomial(15,0.5);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r0->Poisson(3);
}
printf("Poisson(3)........ %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Poisson(3);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Poisson(3);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Poisson(3);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r0->Poisson(10);
}
printf("Poisson(10)....... %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Poisson(10);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Poisson(10);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Poisson(10);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r0->Poisson(70);
}
printf("Poisson(70)....... %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Poisson(70);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Poisson(70);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Poisson(70);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r0->Poisson(100);
}
printf("Poisson(100)...... %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N1;i++) {
x = r1->Poisson(100);
}
printf(" %8.3f",sw.CpuTime()*cpn1);
sw.Start();
for (i=0;i<N;i++) {
x = r2->Poisson(100);
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = r3->Poisson(100);
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
TF1 *f1 = new TF1("f1","gaus",-4,4);
f1->SetParameters(1,0,1);
gRandom = r0;
sw.Start();
for (i=0;i<N;i++) {
x = f1->GetRandom();
}
printf("GausTF1........... %8.3f",sw.CpuTime()*cpn);
gRandom = r1;
sw.Start();
for (i=0;i<N;i++) {
x = f1->GetRandom();
}
printf(" %8.3f",sw.CpuTime()*cpn);
gRandom = r2;
sw.Start();
for (i=0;i<N;i++) {
x = f1->GetRandom();
}
printf(" %8.3f",sw.CpuTime()*cpn);
gRandom = r3;
sw.Start();
for (i=0;i<N;i++) {
x = f1->GetRandom();
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
TF1 *f2 = new TF1("f2","landau",-5,15);
f2->SetParameters(1,0,1);
gRandom = r0;
sw.Start();
for (i=0;i<N;i++) {
x = f2->GetRandom();
}
printf("LandauTF1......... %8.3f",sw.CpuTime()*cpn);
gRandom = r1;
sw.Start();
for (i=0;i<N;i++) {
x = f2->GetRandom();
}
printf(" %8.3f",sw.CpuTime()*cpn);
gRandom = r2;
sw.Start();
for (i=0;i<N;i++) {
x = f2->GetRandom();
}
printf(" %8.3f",sw.CpuTime()*cpn);
gRandom = r3;
sw.Start();
for (i=0;i<N;i++) {
x = f2->GetRandom();
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
// test using Unuran
TUnuran unr0(r0);
TUnuran unr1(r1);
TUnuran unr2(r2);
TUnuran unr3(r3);
// continuous distribution (ex. Gaus)
// use arou method (is probably the fastest)
unr0.Init(dist,"arou");
unr1.Init(dist,"arou");
unr2.Init(dist,"arou");
unr3.Init(dist,"arou");
sw.Start();
for (i=0;i<N;i++) {
x = unr0.Sample();
}
printf("GausUNURAN........ %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr1.Sample();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr2.Sample();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr3.Sample();
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
// Poisson (nned to initialize before with Poisson mu value)
unr0.InitPoisson(10);
unr1.InitPoisson(10);
unr2.InitPoisson(10);
unr3.InitPoisson(10);
sw.Start();
for (i=0;i<N;i++) {
x = unr0.SampleDiscr();
}
printf("PoissonUNURAN(10). %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr1.SampleDiscr();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr2.SampleDiscr();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr3.SampleDiscr();
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
unr0.InitPoisson(100);
unr1.InitPoisson(100);
unr2.InitPoisson(100);
unr3.InitPoisson(100);
sw.Start();
for (i=0;i<N;i++) {
x = unr0.SampleDiscr();
}
printf("PoissonUNURAN(100) %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr1.SampleDiscr();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr2.SampleDiscr();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr3.SampleDiscr();
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
delete r0;
delete r1;
delete r2;
delete r3;
gRandom = rsave;
#ifdef LATER
// Binomial
unr0.InitBinomial(15,0.5);
unr1.InitBinomial(15,0.5);
unr2.InitBinomial(15,0.5);
unr3.InitBinomial(15,0.5);
sw.Start();
for (i=0;i<N;i++) {
x = unr0.SampleDiscr();
}
printf("BinomialUN(15,0.5) %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr1.SampleDiscr();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr2.SampleDiscr();
}
printf(" %8.3f",sw.CpuTime()*cpn);
sw.Start();
for (i=0;i<N;i++) {
x = unr3.SampleDiscr();
}
printf(" %8.3f\n",sw.CpuTime()*cpn);
#endif
}
int testRandom3() {
Float_t RefValue[] = // running using a seed of 4357 ROOT 5.13.07 and checked with GSL 1.8
{ 0.999741749, 0.162909875, 0.282617805, 0.947201082, 0.231656543, 0.484973614, 0.957476957, 0.744305343,
0.540043658, 0.739952981, 0.759943798, 0.658636614, 0.315637622, 0.804403015, 0.519672115, 0.168572422,
0.47552973, 0.392313994, 0.221667687, 0.213190459,0.0303352042, 0.33353925, 0.194148851, 0.943716781,
0.579931675, 0.898304858, 0.665563931, 0.49861031, 0.560628257, 0.182284646, 0.296525531, 0.117408933,
0.0629176658, 0.648125575, 0.725418529, 0.637131158, 0.713885062,0.0995762432, 0.699267196, 0.10781247,
0.129242751, 0.502403039, 0.207779906, 0.288910306,0.0831747944, 0.128124215, 0.547371411,0.0823195996,
0.292141427, 0.891623737, 0.227117839, 0.431845463, 0.140733001, 0.400392135, 0.686946901, 0.170670911,
0.440820868, 0.045336565, 0.311296414, 0.506181051, 0.18241084, 0.511032015, 0.740788205, 0.365988627,
0.160808837, 0.460106785, 0.627836472, 0.677603688, 0.698196523, 0.478536868,0.0901075942, 0.338728522,
0.0952137967, 0.436541964, 0.474673352, 0.419245926, 0.777536852, 0.624610565, 0.98043655, 0.370430201,
0.830812636, 0.140806447, 0.744085307, 0.82973968, 0.391104318, 0.621956392, 0.346699478,0.0461695245,
0.613066321, 0.567374048, 0.498894026, 0.723802079, 0.144550525,0.0423031633, 0.310787023, 0.121641154,
0.242069671, 0.381058855, 0.440128537, 0.599795902, 0.644574654, 0.432626217, 0.555968262, 0.716841168,
0.642362515, 0.685776725,0.0961581462, 0.122933464,0.0569974151, 0.820072044, 0.125539286, 0.315745071,
0.180566925, 0.142227219, 0.664429613, 0.685189223, 0.191001933, 0.436343019, 0.964459225, 0.86816359,
0.130879965, 0.48444228, 0.374654451, 0.900475122, 0.178656787, 0.679635131, 0.62287431, 0.98365595,
0.44071478, 0.804737277, 0.994845061, 0.541550961, 0.255905455, 0.638945635, 0.57591027, 0.25872142,
0.191593001, 0.445663047, 0.149266509, 0.996723689, 0.121762222, 0.65153928,0.0277950978, 0.389977602,
0.827913044, 0.283813907, 0.610203644, 0.23641275, 0.41082105, 0.677714617, 0.847126588, 0.649256228,
0.0813826511, 0.120830484, 0.479199264, 0.777878358, 0.471977701, 0.943337511, 0.980800992, 0.334554731,
0.202667924, 0.342841234, 0.653544244, 0.682758797, 0.60993614,0.0999271029, 0.766254981, 0.735581528,
0.24113914, 0.263178711, 0.960869899, 0.423395737, 0.336058146,0.000249497825, 0.868841017,0.00375315035,
0.165846311,0.0118208411, 0.606455074, 0.729972019, 0.613824557, 0.965768184, 0.497098261, 0.529885403,
0.461607532, 0.713033701, 0.579959768, 0.682802555, 0.953921514,0.0236552036, 0.280110147, 0.869526353,
0.299333274, 0.319553603, 0.300951709, 0.941111486, 0.848127064, 0.753346129, 0.538244087, 0.408481381,
0.212371316,0.0761404021, 0.289934908,0.0197818337, 0.241247899, 0.384619165, 0.454906886, 0.373982521,
0.440188796, 0.117896808, 0.805429845, 0.164892641, 0.282529936, 0.172685399, 0.93584233, 0.68095306,
0.133696739, 0.254761223, 0.399444876, 0.369235365, 0.726361892, 0.277837459, 0.693569104, 0.500354689,
0.118405538, 0.151303335, 0.681446943, 0.720665918, 0.979646939, 0.696779111, 0.557210072, 0.680821482,
0.95535205, 0.598208956, 0.770453895, 0.913597486, 0.658958649, 0.670974613, 0.578185175, 0.95303929,
0.162923458, 0.335056986, 0.951824704, 0.109661644, 0.619302303, 0.956816742, 0.985243094,0.0707377489,
0.50233039, 0.680721226, 0.553320066, 0.587005581, 0.691620562, 0.46264791, 0.574254294, 0.072890088,
0.638266518, 0.387757288, 0.220960217,0.00223180233, 0.495656775, 0.191316523, 0.022265008, 0.903589021,
0.738628175, 0.44453089, 0.417702243, 0.760861122, 0.437753222, 0.190982861, 0.577112962, 0.132688343,
0.317824347, 0.48691649, 0.939091069, 0.933946281, 0.073660135, 0.612436295, 0.514748724, 0.624663582,
0.130645262, 0.645210441, 0.13414855, 0.652925968, 0.265210009, 0.381805269, 0.59021506, 0.669704082,
0.55433248,0.0195047602, 0.184346962, 0.991180462, 0.573677764, 0.637762085, 0.594857598, 0.515244688,
0.330693509, 0.39674245, 0.88396548, 0.771485266, 0.599075381,0.0247266297,0.0122587895, 0.698452319,
0.265991009, 0.736700721, 0.999972619, 0.749792316, 0.484955589, 0.823700529, 0.62277709, 0.902512094,
0.0565051287, 0.739077389, 0.37617622, 0.036800765, 0.776198219, 0.837354186, 0.34508193,0.0818426476,
0.222621545, 0.152476319, 0.401177195, 0.531612608, 0.811706602,0.0407775661, 0.117889008, 0.575189965,
0.832362208, 0.204641853, 0.238721773, 0.9969287, 0.258590596, 0.892055968, 0.846859788, 0.306583706,
0.0333624918, 0.706420498, 0.193615608, 0.508978138,0.0215451468, 0.672732793, 0.813562444, 0.807284052,
0.481526843, 0.537519095, 0.780848606, 0.335848908, 0.699259371, 0.425855299, 0.825240663, 0.945613692,
0.55484125, 0.710495188, 0.378360366, 0.648338731,0.0456727168, 0.155477323, 0.885353968, 0.721565725,
0.961667201, 0.430300885, 0.132031354, 0.439331209, 0.467187736, 0.410083217, 0.277196711, 0.278509559,
0.954620806, 0.804357491, 0.968510466, 0.999722791, 0.947160283, 0.248551138,0.0067049861, 0.444727315,
0.674048778, 0.496480361,0.0210092501, 0.831763222, 0.108545852,0.0931516394, 0.89020564, 0.445945211,
0.906906768, 0.554039821, 0.759434349, 0.815551384, 0.532968503,0.0551351462,0.0539856541, 0.89918819,
0.146907374, 0.482647314,0.0673029809, 0.281161865, 0.932849165, 0.507317933, 0.564503014, 0.8007132,
0.645887499, 0.309219498,0.0478066066, 0.25196583, 0.713881142, 0.670994017, 0.60528576, 0.148271899,
0.79525035, 0.665277353, 0.854302043, 0.810533677,0.0711439839,0.0687935678, 0.890466573, 0.758045957,
0.0703105873, 0.852094478, 0.775356902, 0.684895203, 0.234552787, 0.461575694, 0.936435457, 0.664946419,
0.45967959, 0.88782351, 0.574622261,0.0301686234, 0.767354721, 0.345478555, 0.609123143, 0.21754287,
0.643760561, 0.571392649, 0.802311049, 0.962335547, 0.401769856, 0.996553418, 0.745945812, 0.448411183,
0.39578428, 0.123389926, 0.532614913, 0.833379602, 0.91767313, 0.825607567, 0.4459154, 0.267136201,
0.6643989, 0.766860694, 0.665968275, 0.503955105, 0.835153702, 0.622405379, 0.457538918, 0.554983278,
0.36581371, 0.656302231, 0.917038669, 0.276054591, 0.121214441, 0.966178254, 0.697439008, 0.443547789,
0.630195824, 0.368346675, 0.238191956, 0.300273821, 0.710332172,0.0474748381, 0.492525443,0.0812539798,
0.122016782, 0.99310218, 0.355091027, 0.764863731, 0.904099543, 0.396109613, 0.817134856, 0.348974222,
0.266193634, 0.367501958, 0.752316213, 0.587800024, 0.489421095, 0.673474061, 0.328296139, 0.853945839,
0.832380736, 0.159588686, 0.322411022, 0.950173707, 0.095376712, 0.231019855, 0.860607752, 0.359627192,
0.984843699,0.0319756679, 0.828649914, 0.51680949, 0.489407924, 0.963977298, 0.960131739, 0.681816791,
0.860788169, 0.455829282, 0.332390656,0.0591498043, 0.452245977, 0.217354216, 0.34560744, 0.549971993,
0.317622252, 0.892976443, 0.49004545, 0.25647901, 0.968998638, 0.910636465, 0.226717598, 0.327828572,
0.28670209, 0.142515054,0.0992817392, 0.192332409, 0.308376869, 0.871415959, 0.391148786, 0.788660882,
0.200816041, 0.986475959, 0.882862126, 0.109862451, 0.354283255, 0.555742682, 0.690698458, 0.643815752,
0.363104285,0.0788627111, 0.200820414, 0.71697353, 0.744353746, 0.76763643, 0.245442451, 0.668009119,
0.886989377, 0.366849931, 0.531556628, 0.502843979, 0.31454367, 0.622541364,0.0199038582, 0.676355134,
0.429818622, 0.232835212, 0.987619457, 0.306572135, 0.494637038, 0.748614893, 0.891843561,0.0452854959,
0.427561072, 0.226978442, 0.484072985, 0.16464563,0.0898074883, 0.384263737,0.0238354723, 0.329734547,
0.531230736, 0.476683361, 0.877482474, 0.455501628, 0.497302495, 0.396184301, 0.886124728, 0.736070092,
0.108917595, 0.397921902, 0.842575021, 0.82620032, 0.936655165, 0.24558961, 0.639688616, 0.493335031,
0.0734495069, 0.780138101,0.0421121232, 0.701116477, 0.940523267, 0.70054817, 0.776760272, 0.192742581,
0.0069252688, 0.842983626, 0.919324176, 0.242083269, 0.190100674, 0.735084639, 0.164522319, 0.99030645,
0.98284794, 0.657169539,0.0187736442, 0.759596482, 0.357567611, 0.509016344, 0.738899681, 0.567923164,
0.289056634, 0.41501714, 0.981054561, 0.365884479, 0.517878261, 0.844209022, 0.968122653, 0.258894528,
0.478310441, 0.437340986, 0.379398001, 0.203081884, 0.550820748, 0.255542723, 0.550098031, 0.870477939,
0.241230214, 0.157108238, 0.218260827, 0.116277737, 0.749018275, 0.158290659, 0.476353907, 0.545327323,
0.878978121,0.0171442169, 0.542981987, 0.318018082, 0.788805343, 0.871721374, 0.738490409,0.0923330146,
0.301398643, 0.637103286, 0.571564271, 0.712810342, 0.644289242, 0.230476008, 0.971695586, 0.966159428,
0.291883909, 0.175285818, 0.312882552, 0.98465128, 0.568391354, 0.844468564, 0.144433908, 0.45994061,
0.607897905, 0.184122705, 0.342805493, 0.606432998, 0.838196585, 0.186188518,0.0302744689, 0.307391858,
0.125286029, 0.270394965, 0.874161481, 0.370509557, 0.89423337, 0.407995674, 0.881878469, 0.647951238,
0.236986727, 0.528807336, 0.293731542,0.0943204253, 0.934538626, 0.121679332, 0.34968176,0.0670268578,
0.642196769, 0.692447138, 0.334926733, 0.374244194, 0.313885051, 0.538738295, 0.098592523, 0.490514225,
0.32873567, 0.709725794, 0.88169803, 0.393000481, 0.854243273, 0.463776593, 0.52705639, 0.493309892,
0.267784336, 0.583077476,0.0573514167, 0.959336368, 0.771417173,0.0427184631, 0.498433369,0.0522942701,
0.56155145, 0.960361909, 0.619817314, 0.528628368, 0.698235179, 0.186162042, 0.553998168, 0.666120292,
0.152731049, 0.948750157, 0.186825789, 0.580512664, 0.851024442, 0.106865844, 0.675861737, 0.79604524,
0.657646103,0.00934952381, 0.206267588, 0.636420368,0.0382564603, 0.67771025, 0.677917925, 0.671684269,
0.396317716, 0.661597047, 0.633360383, 0.962124239, 0.992711418,0.0993448263,0.0678932741, 0.426013152,
0.947045502, 0.708326009, 0.466817846,0.0448362886, 0.748580922, 0.678370694, 0.210921343, 0.398490306,
0.953675585,0.0289022848, 0.935766569, 0.846930474, 0.662760176, 0.867910903, 0.652359324, 0.45280494,
0.305228982, 0.352034987, 0.279643402, 0.236045594,0.0270034608, 0.652062389, 0.712000227, 0.619930867,
0.125439078, 0.452789963, 0.92233151, 0.120844359, 0.403808975, 0.260290446, 0.778843638, 0.6678412,
0.0267894373, 0.491332301, 0.915060888, 0.704025347, 0.628200853, 0.578338467, 0.629156416, 0.730410649,
0.641318334, 0.463709335, 0.614291239, 0.254470656, 0.808682692, 0.22898373, 0.450477996, 0.874235142,
0.202773906, 0.523711192, 0.126518266, 0.579402899, 0.26188467, 0.207769057, 0.55283816, 0.851395364,
0.513594437, 0.558259845, 0.666148535, 0.998974657, 0.178274074, 0.116739636,0.0684255431, 0.622713377,
0.31448295, 0.889827933, 0.80647766, 0.429916949, 0.524695458, 0.45267553, 0.630743121, 0.566594485,
0.958860663, 0.908052286, 0.700898262, 0.377025384, 0.683796226, 0.198088462, 0.617400699, 0.413726158,
0.823588417, 0.755577948, 0.703097317, 0.364294278, 0.819786986, 0.751581763, 0.048769509, 0.528569003,
0.616748192, 0.270942831, 0.800841747, 0.235174223, 0.903786552, 0.258801569, 0.191336412, 0.012410342,
0.853413998, 0.621008712, 0.855861931, 0.140106201, 0.872687964, 0.708839735,0.0926409892,0.0207504195,
0.782636518,0.0300825236, 0.504610632,0.0816221782, 0.773493745, 0.872577282, 0.880031248, 0.883524299,
0.872427328, 0.458722225, 0.902298841, 0.547904952,0.0559884352, 0.591179888, 0.563941709, 0.776130076,
0.295569778,0.0408536533, 0.398567183, 0.28227462, 0.806716321, 0.507159362, 0.688150965, 0.49466404,
0.45454604, 0.421480091,0.0392517329,0.0911962031, 0.393815309, 0.135373195, 0.968650583, 0.811676111,
0.325965411, 0.961999178, 0.100281202, 0.102924612, 0.30725909, 0.33368206, 0.857966134, 0.522921736,
0.615500041, 0.981558684, 0.797484739, 0.198809674, 0.45670419, 0.570970797, 0.214908696, 0.686433314,
0.278602115, 0.179739848, 0.397497946, 0.162858935, 0.802621762,0.0836459133, 0.638270752, 0.230856518,
0.580094379, 0.864292514, 0.932738287, 0.821393124, 0.480590473, 0.636373016, 0.181508656, 0.469200501,
0.309276441, 0.668810431, 0.722341161, 0.574856669, 0.527854513, 0.809231559, 0.986882661, 0.323860496,
0.606396459, 0.759558966, 0.79096818,0.0699298142, 0.550465414,0.00929828244, 0.784629475, 0.689044114,
0.963588091, 0.516441598, 0.357178305, 0.482336892, 0.429959602, 0.996306147, 0.601176011, 0.785004207,
0.970542121, 0.487854549,0.0949267522, 0.979331773, 0.120877739, 0.630260336, 0.19424754, 0.213081703,
0.0145987798, 0.366671115, 0.340100777, 0.721786347, 0.367533113,0.0210335371, 0.131687992, 0.586759676,
0.73360464, 0.863635151, 0.136994646,0.0524269778, 0.406223408, 0.241656947, 0.472450703, 0.872215979,
0.454719233,0.0715790696, 0.314061244, 0.492823114, 0.741721134, 0.694783663, 0.982867872, 0.319748137,
0.804203704,0.0534678153, 0.746155348, 0.303474931,0.0930815139, 0.934531664, 0.746868186, 0.100048471,
0.720296508, 0.21075374, 0.96309675, 0.749189411, 0.739621932, 0.510072327,0.0872929865, 0.650020469,
0.0823648495, 0.726920745, 0.532618265, 0.749305866, 0.86126694,0.0346994482,0.0931224583, 0.655257095,
0.959517847, 0.487057231, 0.859895745, 0.084794421, 0.718541715, 0.850918328, 0.818884782, 0.71627446,
0.40822393, 0.63658567, 0.523838703, 0.372038872, 0.353426097, 0.598049047,0.0974868746, 0.276353038
};
Int_t rc1 = 0;
Int_t rc2 = 0;
TRandom3 r(4357);
Int_t i;
// check whether the sequence is ok or not
for (i=0;i<1000;i++) {
x = r.Rndm();
// printf("%e ",x-RefValue[i]); if(i%8==7) printf("\n");
if (TMath::Abs(x-RefValue[i]) > 10e-8) {
printf("i=%d x=%.8f but should be %.8f\n",i,x,RefValue[i]);
rc1 += 1;
}
}
// check whether a state can be saved and restored
TFile *file = new TFile("random3.root","RECREATE");
file->SetCompressionLevel(0);
r.Write("r");
delete file;
file = new TFile("random3.root");
TRandom3 *rs = (TRandom3*) file->Get("r");
for (i=0;i<1000;i++) {
if (r.Rndm() - rs->Rndm() != 0) rc2 += 1;
}
if (rc2 != 0) printf("state restoration failed\n");
return rc1 + rc2;
}
void testrandom()
{
testRandom3();
testAll();
}
Authors
Rene Brun, Lorenzo Moneta

Definition in file testrandom.C.

TRandomGen::RndmArray
virtual void RndmArray(Int_t n, Float_t *array)
Return an array of n random numbers uniformly distributed in ]0,1].
Definition: TRandomGen.h:63
TUnuran.h
TRandom::Gaus
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
Definition: TRandom.cxx:263
e
#define e(i)
Definition: RSha256.hxx:103
TRandom2.h
r
ROOT::R::TRInterface & r
Definition: Object.C:4
TRandomMixMax17
TRandomGen< ROOT::Math::MixMaxEngine< 17, 0 > > TRandomMixMax17
MIXMAX generator based on a state of N=17.
Definition: TRandomGen.h:113
TStopwatch.h
RooStats::HistFactory::Constraint::Poisson
@ Poisson
Definition: Systematics.h:25
Float_t
float Float_t
Definition: RtypesCore.h:57
Int_t
int Int_t
Definition: RtypesCore.h:45
N
#define N
x
Double_t x[n]
Definition: legend1.C:17
TMath::Abs
Short_t Abs(Short_t d)
Definition: TMathBase.h:120
TMath::Binomial
Double_t Binomial(Int_t n, Int_t k)
Calculate the binomial coefficient n over k.
Definition: TMath.cxx:2083
TUnuranContDist.h
TFile.h
TF1::GetRandom
virtual Double_t GetRandom(TRandom *rng=nullptr, Option_t *opt=nullptr)
Return a random number following this function shape.
Definition: TF1.cxx:2191
TF1::SetParameters
virtual void SetParameters(const Double_t *params)
Definition: TF1.h:643
TRandom::Rannor
virtual void Rannor(Float_t &a, Float_t &b)
Return 2 numbers distributed following a gaussian with mean=0 and sigma=1.
Definition: TRandom.cxx:489
xmlio::Root
const char * Root
Definition: TXMLSetup.cxx:47
ROOT::Math::gv_detail::dist
double dist(Rotation3D const &r1, Rotation3D const &r2)
Definition: 3DDistances.cxx:48
TRandom1.h
ROOT::v5::TFastFun::Landau
Double_t Landau(Double_t x, Double_t mean, Double_t sigma)
Definition: TFormulaPrimitive_v5.cxx:287
TRandom::Binomial
virtual Int_t Binomial(Int_t ntot, Double_t prob)
Generates a random integer N according to the binomial law.
Definition: TRandom.cxx:200
TRandom
This is the base class for the ROOT Random number generators.
Definition: TRandom.h:27
TUnuranContDist
TUnuranContDist class describing one dimensional continuous distribution.
Definition: TUnuranContDist.h:48
TRandom3
Random number generator class based on M.
Definition: TRandom3.h:27
ROOT::v5::TFastFun::Gaus
Double_t Gaus(Double_t x, Double_t mean, Double_t sigma)
Gauss.
Definition: TFormulaPrimitive_v5.cxx:387
TRandomMixMax256
TRandomGen< ROOT::Math::MixMaxEngine< 256, 2 > > TRandomMixMax256
MIXMAX generator based on a state of N=256, based on the generator descrived in this paper:
Definition: TRandomGen.h:127
TRandom::RndmArray
virtual void RndmArray(Int_t n, Float_t *array)
Return an array of n random numbers uniformly distributed in ]0,1].
Definition: TRandom.cxx:577
gRandom
R__EXTERN TRandom * gRandom
Definition: TRandom.h:62
TRandom2
Random number generator class based on the maximally quidistributed combined Tausworthe generator by ...
Definition: TRandom2.h:27
TRandom3.h
TRandom::Rndm
virtual Double_t Rndm()
Machine independent random number generator.
Definition: TRandom.cxx:541
TRandom::Landau
virtual Double_t Landau(Double_t mean=0, Double_t sigma=1)
Generate a random number following a Landau distribution with location parameter mu and scale paramet...
Definition: TRandom.cxx:369
y
Double_t y[n]
Definition: legend1.C:17
TStopwatch::Start
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
Definition: TStopwatch.cxx:58
TStopwatch::CpuTime
Double_t CpuTime()
Stop the stopwatch (if it is running) and return the cputime (in seconds) passed between the start an...
Definition: TStopwatch.cxx:125
TFile
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:54
TRandomMixMax
TRandomGen< ROOT::Math::MixMaxEngine< 240, 0 > > TRandomMixMax
MIXMAX generator based on a state of N=240.
Definition: TRandomGen.h:102
f1
TF1 * f1
Definition: legend1.C:11
TRandomMT64
TRandomGen< ROOT::Math::StdEngine< std::mt19937_64 > > TRandomMT64
Generator based on a the Mersenne-Twister generator with 64 bits, using the implementation provided b...
Definition: TRandomGen.h:135
TF1.h
TRandom3::Rndm
virtual Double_t Rndm()
Machine independent random number generator.
Definition: TRandom3.cxx:99
TRandom::Poisson
virtual Int_t Poisson(Double_t mean)
Generates a random integer N according to a Poisson law.
Definition: TRandom.cxx:391
file
Definition: file.py:1
TRandomGen.h
TObject::Write
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
Definition: TObject.cxx:795
TStopwatch
Stopwatch class.
Definition: TStopwatch.h:28
TRandom1
The Ranlux Random number generator class.
Definition: TRandom1.h:27
TRandomGen
Definition: TRandomGen.h:48
TMVA::Experimental::Objectives::Exponential
T Exponential(T value)
Natural exponential function f(x) = exp(x)
Definition: Objectives.hxx:51
TRandomRanlux48
TRandomGen< ROOT::Math::StdEngine< std::ranlux48 > > TRandomRanlux48
Generator based on a the RanLux generator with 48 bits, using the implementation provided by the stan...
Definition: TRandomGen.h:143
TRandom::Exp
virtual Double_t Exp(Double_t tau)
Returns an exponential deviate.
Definition: TRandom.cxx:240
TRandomGen::Rndm
virtual Double_t Rndm()
Machine independent random number generator.
Definition: TRandomGen.h:62
TF1
1-Dim function class
Definition: TF1.h:213
TUnuran
TUnuran class.
Definition: TUnuran.h:79