testrandom.C

Go to the documentation of this file.
00001 //+______________________________________________________________________________
00002 // Performance test of all the ROOT random generator (TRandom, TRandom1, TRandom2 and TRandom3)  
00003 // Tests the generator TRandom3 against some ref values
00004 // and creates a timing table against TRandom, TRandom1 and TRandom2.
00005 //
00006 // E.g. on an an Intel Xeon Quad-core Harpertown (E5410) 2.33 GHz running 
00007 // Linux SLC4 64 bit and compiled with gcc 3.4
00008 //
00009 // Distribution            nanoseconds/call
00010 //                     TRandom  TRandom1 TRandom2 TRandom3
00011 // Rndm..............    5.000  105.000    7.000   10.000
00012 // RndmArray.........    4.000  104.000    6.000    9.000
00013 // Gaus..............   36.000  180.000   40.000   48.000
00014 // Rannor............  118.000  220.000  120.000  124.000
00015 // Landau............   22.000  123.000   26.000   31.000
00016 // Exponential.......   93.000  198.000   98.000  104.000
00017 // Binomial(5,0.5)...   30.000  548.000   46.000   65.000
00018 // Binomial(15,0.5)..   75.000 1615.000  125.000  178.000
00019 // Poisson(3)........   96.000  494.000  109.000  125.000
00020 // Poisson(10).......  138.000 1236.000  165.000  203.000
00021 // Poisson(70).......  818.000 1195.000  835.000  844.000
00022 // Poisson(100)......  837.000 1218.000  849.000  864.000
00023 // GausTF1...........   83.000  180.000   87.000   88.000
00024 // LandauTF1.........   80.000  180.000   83.000   86.000
00025 // GausUNURAN........   40.000  139.000   41.000   44.000
00026 // PoissonUNURAN(10).   85.000  271.000   92.000  102.000
00027 // PoissonUNURAN(100)   62.000  256.000   69.000   78.000
00028 //
00029 //
00030 // Note that this tutorial can be executed in interpreted or compiled mode
00031 //  Root > .x testrandom.C
00032 //  Root > .x testrandom.C++
00033 //
00034 //Authors: Rene Brun, Lorenzo Moneta
00035 
00036 
00037 #include <TRandom1.h>
00038 #include <TRandom2.h>
00039 #include <TRandom3.h>
00040 #include <TStopwatch.h>
00041 #include <TF1.h>
00042 #include <TUnuran.h>
00043 #include <TUnuranContDist.h>
00044 #include <TFile.h>
00045 
00046 
00047 void testAll() {
00048   int i, N = 5000000;
00049   float cpn = 1000000000./N;
00050   double x,y;
00051   TRandom *rsave = gRandom;
00052   TRandom *r0 = new TRandom();
00053   TRandom *r1 = new TRandom1();
00054   TRandom *r2 = new TRandom2();
00055   TRandom *r3 = new TRandom3();
00056 
00057   TStopwatch sw;
00058   printf("Distribution            nanoseconds/call\n");
00059   printf("                    TRandom  TRandom1 TRandom2 TRandom3\n");
00060 
00061   sw.Start();
00062   for (i=0;i<N;i++) {
00063      x = r0->Rndm(i);
00064   }
00065   printf("Rndm.............. %8.3f",sw.CpuTime()*cpn);
00066   sw.Start();
00067   for (i=0;i<N;i++) {
00068      x = r1->Rndm(i);
00069   }
00070   printf(" %8.3f",sw.CpuTime()*cpn);
00071   sw.Start();
00072   for (i=0;i<N;i++) {
00073      x = r2->Rndm(i);
00074   }
00075   printf(" %8.3f",sw.CpuTime()*cpn);
00076   sw.Start();
00077   for (i=0;i<N;i++) {
00078      x = r3->Rndm(i);
00079   }
00080   printf(" %8.3f\n",sw.CpuTime()*cpn);
00081 
00082   const int NR = 1000;
00083   double rn[NR];
00084   sw.Start();
00085   for (i=0;i<N;i+=NR) {
00086      r0->RndmArray(NR,rn);
00087   }
00088   printf("RndmArray......... %8.3f",sw.CpuTime()*cpn);
00089   sw.Start();
00090   for (i=0;i<N;i+=NR) {
00091      r1->RndmArray(NR,rn);
00092   }
00093   printf(" %8.3f",sw.CpuTime()*cpn);
00094   sw.Start();
00095   for (i=0;i<N;i+=NR) {
00096      r2->RndmArray(NR,rn);
00097   }
00098   printf(" %8.3f",sw.CpuTime()*cpn);
00099   sw.Start();
00100   for (i=0;i<N;i+=NR) {
00101      r3->RndmArray(NR,rn);
00102   }
00103   printf(" %8.3f\n",sw.CpuTime()*cpn);
00104 
00105   sw.Start();
00106   for (i=0;i<N;i++) {
00107      x = r0->Gaus(0,1);
00108   }
00109   printf("Gaus.............. %8.3f",sw.CpuTime()*cpn);
00110   sw.Start();
00111   for (i=0;i<N;i++) {
00112      x = r1->Gaus(0,1);
00113   }
00114   printf(" %8.3f",sw.CpuTime()*cpn);
00115   sw.Start();
00116   for (i=0;i<N;i++) {
00117      x = r2->Gaus(0,1);
00118   }
00119   printf(" %8.3f",sw.CpuTime()*cpn);
00120   sw.Start();
00121   for (i=0;i<N;i++) {
00122      x = r3->Gaus(0,1);
00123   }
00124   printf(" %8.3f\n",sw.CpuTime()*cpn);
00125   
00126   sw.Start();
00127   for (i=0;i<N;i+=2) {
00128      r0->Rannor(x,y);
00129   }
00130   printf("Rannor............ %8.3f",sw.CpuTime()*cpn);
00131   sw.Start();
00132   for (i=0;i<N;i+=2) {
00133      r1->Rannor(x,y);
00134   }
00135   printf(" %8.3f",sw.CpuTime()*cpn);
00136   sw.Start();
00137   for (i=0;i<N;i+=2) {
00138      r2->Rannor(x,y);
00139   }
00140   printf(" %8.3f",sw.CpuTime()*cpn);
00141   sw.Start();
00142   for (i=0;i<N;i+=2) {
00143      r3->Rannor(x,y);
00144   }
00145   printf(" %8.3f\n",sw.CpuTime()*cpn);
00146 
00147   sw.Start();
00148   for (i=0;i<N;i++) {
00149      x = r0->Landau(0,1);
00150   }
00151   printf("Landau............ %8.3f",sw.CpuTime()*cpn);
00152   sw.Start();
00153   for (i=0;i<N;i++) {
00154      x = r1->Landau(0,1);
00155   }
00156   printf(" %8.3f",sw.CpuTime()*cpn);
00157   sw.Start();
00158   for (i=0;i<N;i++) {
00159      x = r2->Landau(0,1);
00160   }
00161   printf(" %8.3f",sw.CpuTime()*cpn);
00162   sw.Start();
00163   for (i=0;i<N;i++) {
00164      x = r3->Landau(0,1);
00165   }
00166   printf(" %8.3f\n",sw.CpuTime()*cpn);
00167 
00168   sw.Start();
00169   for (i=0;i<N;i++) {
00170      x = r0->Exp(1);
00171   }
00172   printf("Exponential....... %8.3f",sw.CpuTime()*cpn);
00173   sw.Start();
00174   for (i=0;i<N;i++) {
00175      x = r1->Exp(1);
00176   }
00177   printf(" %8.3f",sw.CpuTime()*cpn);
00178   sw.Start();
00179   for (i=0;i<N;i++) {
00180      x = r2->Exp(1);
00181   }
00182   printf(" %8.3f",sw.CpuTime()*cpn);
00183   sw.Start();
00184   for (i=0;i<N;i++) {
00185      x = r3->Exp(1);
00186   }
00187   printf(" %8.3f\n",sw.CpuTime()*cpn);
00188 
00189   sw.Start();
00190   for (i=0;i<N;i++) {
00191      x = r0->Binomial(5,0.5);
00192   }
00193   printf("Binomial(5,0.5)... %8.3f",sw.CpuTime()*cpn);
00194   sw.Start();
00195   for (i=0;i<N;i++) {
00196      x = r1->Binomial(5,0.5);
00197   }
00198   printf(" %8.3f",sw.CpuTime()*cpn);
00199   sw.Start();
00200   for (i=0;i<N;i++) {
00201      x = r2->Binomial(5,0.5);
00202   }
00203   printf(" %8.3f",sw.CpuTime()*cpn);
00204   sw.Start();
00205   for (i=0;i<N;i++) {
00206      x = r3->Binomial(5,0.5);
00207   }
00208   printf(" %8.3f\n",sw.CpuTime()*cpn);
00209 
00210   sw.Start();
00211   for (i=0;i<N;i++) {
00212      x = r0->Binomial(15,0.5);
00213   }
00214   printf("Binomial(15,0.5).. %8.3f",sw.CpuTime()*cpn);
00215   sw.Start();
00216   for (i=0;i<N;i++) {
00217      x = r1->Binomial(15,0.5);
00218   }
00219   printf(" %8.3f",sw.CpuTime()*cpn);
00220   sw.Start();
00221   for (i=0;i<N;i++) {
00222      x = r2->Binomial(15,0.5);
00223   }
00224   printf(" %8.3f",sw.CpuTime()*cpn);
00225   sw.Start();
00226   for (i=0;i<N;i++) {
00227      x = r3->Binomial(15,0.5);
00228   }
00229   printf(" %8.3f\n",sw.CpuTime()*cpn);
00230 
00231   sw.Start();
00232   for (i=0;i<N;i++) {
00233      x = r0->Poisson(3);
00234   }
00235   printf("Poisson(3)........ %8.3f",sw.CpuTime()*cpn);
00236   sw.Start();
00237   for (i=0;i<N;i++) {
00238      x = r1->Poisson(3);
00239   }
00240   printf(" %8.3f",sw.CpuTime()*cpn);
00241   sw.Start();
00242   for (i=0;i<N;i++) {
00243      x = r2->Poisson(3);
00244   }
00245   printf(" %8.3f",sw.CpuTime()*cpn);
00246   sw.Start();
00247   for (i=0;i<N;i++) {
00248      x = r3->Poisson(3);
00249   }
00250   printf(" %8.3f\n",sw.CpuTime()*cpn);
00251 
00252   sw.Start();
00253   for (i=0;i<N;i++) {
00254      x = r0->Poisson(10);
00255   }
00256   printf("Poisson(10)....... %8.3f",sw.CpuTime()*cpn);
00257   sw.Start();
00258   for (i=0;i<N;i++) {
00259      x = r1->Poisson(10);
00260   }
00261   printf(" %8.3f",sw.CpuTime()*cpn);
00262   sw.Start();
00263   for (i=0;i<N;i++) {
00264      x = r2->Poisson(10);
00265   }
00266   printf(" %8.3f",sw.CpuTime()*cpn);
00267   sw.Start();
00268   for (i=0;i<N;i++) {
00269      x = r3->Poisson(10);
00270   }
00271   printf(" %8.3f\n",sw.CpuTime()*cpn);
00272 
00273   sw.Start();
00274   for (i=0;i<N;i++) {
00275      x = r0->Poisson(70);
00276   }
00277   printf("Poisson(70)....... %8.3f",sw.CpuTime()*cpn);
00278   sw.Start();
00279   for (i=0;i<N;i++) {
00280      x = r1->Poisson(70);
00281   }
00282   printf(" %8.3f",sw.CpuTime()*cpn);
00283   sw.Start();
00284   for (i=0;i<N;i++) {
00285      x = r2->Poisson(70);
00286   }
00287   printf(" %8.3f",sw.CpuTime()*cpn);
00288   sw.Start();
00289   for (i=0;i<N;i++) {
00290      x = r3->Poisson(70);
00291   }
00292   printf(" %8.3f\n",sw.CpuTime()*cpn);
00293 
00294   sw.Start();
00295   for (i=0;i<N;i++) {
00296      x = r0->Poisson(100);
00297   }
00298   printf("Poisson(100)...... %8.3f",sw.CpuTime()*cpn);
00299   sw.Start();
00300   for (i=0;i<N;i++) {
00301      x = r1->Poisson(100);
00302   }
00303   printf(" %8.3f",sw.CpuTime()*cpn);
00304   sw.Start();
00305   for (i=0;i<N;i++) {
00306      x = r2->Poisson(100);
00307   }
00308   printf(" %8.3f",sw.CpuTime()*cpn);
00309   sw.Start();
00310   for (i=0;i<N;i++) {
00311      x = r3->Poisson(100);
00312   }
00313   printf(" %8.3f\n",sw.CpuTime()*cpn);
00314 
00315   TF1 *f1 = new TF1("f1","gaus",-4,4);
00316   f1->SetParameters(1,0,1);
00317   gRandom = r0;
00318   sw.Start();
00319   for (i=0;i<N;i++) {
00320      x = f1->GetRandom();
00321   }
00322   printf("GausTF1........... %8.3f",sw.CpuTime()*cpn);
00323   gRandom = r1;
00324   sw.Start();
00325   for (i=0;i<N;i++) {
00326      x = f1->GetRandom();
00327   }
00328   printf(" %8.3f",sw.CpuTime()*cpn);
00329   gRandom = r2;
00330   sw.Start();
00331   for (i=0;i<N;i++) {
00332      x = f1->GetRandom();
00333   }
00334   printf(" %8.3f",sw.CpuTime()*cpn);
00335   gRandom = r3;
00336   sw.Start();
00337   for (i=0;i<N;i++) {
00338      x = f1->GetRandom();
00339   }
00340   printf(" %8.3f\n",sw.CpuTime()*cpn);
00341 
00342   TF1 *f2 = new TF1("f2","landau",-5,15);
00343   f2->SetParameters(1,0,1);
00344 
00345   gRandom = r0;
00346   sw.Start();
00347   for (i=0;i<N;i++) {
00348      x = f2->GetRandom();
00349   }
00350   printf("LandauTF1......... %8.3f",sw.CpuTime()*cpn);
00351   gRandom = r1;
00352   sw.Start();
00353   for (i=0;i<N;i++) {
00354      x = f2->GetRandom();
00355   }
00356   printf(" %8.3f",sw.CpuTime()*cpn);
00357   gRandom = r2;
00358   sw.Start();
00359   for (i=0;i<N;i++) {
00360      x = f2->GetRandom();
00361   }
00362   printf(" %8.3f",sw.CpuTime()*cpn);
00363   gRandom = r3;
00364   sw.Start();
00365   for (i=0;i<N;i++) {
00366      x = f2->GetRandom();
00367   }
00368   printf(" %8.3f\n",sw.CpuTime()*cpn);
00369 
00370   // test using Unuran
00371   TUnuran unr0(r0);
00372   TUnuran unr1(r1);
00373   TUnuran unr2(r2);
00374   TUnuran unr3(r3);
00375 
00376   // continuous distribution (ex. Gaus)
00377   TUnuranContDist dist(f1);
00378   // use arou method (is probably the fastest) 
00379   unr0.Init(dist,"arou");
00380   unr1.Init(dist,"arou");
00381   unr2.Init(dist,"arou");
00382   unr3.Init(dist,"arou");
00383 
00384   sw.Start();
00385   for (i=0;i<N;i++) {
00386      x = unr0.Sample();
00387   }
00388   printf("GausUNURAN........ %8.3f",sw.CpuTime()*cpn);
00389   sw.Start();
00390   for (i=0;i<N;i++) {
00391      x = unr1.Sample();
00392   }
00393   printf(" %8.3f",sw.CpuTime()*cpn);
00394   sw.Start();
00395   for (i=0;i<N;i++) {
00396      x = unr2.Sample();
00397   }
00398   printf(" %8.3f",sw.CpuTime()*cpn);
00399   sw.Start();
00400   for (i=0;i<N;i++) {
00401      x = unr3.Sample();
00402   }
00403   printf(" %8.3f\n",sw.CpuTime()*cpn);
00404 
00405   // Poisson (nned to initialize before with Poisson mu value)
00406 
00407   unr0.InitPoisson(10);
00408   unr1.InitPoisson(10);
00409   unr2.InitPoisson(10);
00410   unr3.InitPoisson(10);
00411 
00412   sw.Start();
00413   for (i=0;i<N;i++) {
00414      x = unr0.SampleDiscr();
00415   }
00416   printf("PoissonUNURAN(10). %8.3f",sw.CpuTime()*cpn);
00417   sw.Start();
00418   for (i=0;i<N;i++) {
00419      x = unr1.SampleDiscr();
00420   }
00421   printf(" %8.3f",sw.CpuTime()*cpn);
00422   sw.Start();
00423   for (i=0;i<N;i++) {
00424      x = unr2.SampleDiscr();
00425   }
00426   printf(" %8.3f",sw.CpuTime()*cpn);
00427   sw.Start();
00428   for (i=0;i<N;i++) {
00429      x = unr3.SampleDiscr();
00430   }
00431   printf(" %8.3f\n",sw.CpuTime()*cpn);
00432 
00433   unr0.InitPoisson(100);
00434   unr1.InitPoisson(100);
00435   unr2.InitPoisson(100);
00436   unr3.InitPoisson(100);
00437 
00438   sw.Start();
00439   for (i=0;i<N;i++) {
00440      x = unr0.SampleDiscr();
00441   }
00442   printf("PoissonUNURAN(100) %8.3f",sw.CpuTime()*cpn);
00443   sw.Start();
00444   for (i=0;i<N;i++) {
00445      x = unr1.SampleDiscr();
00446   }
00447   printf(" %8.3f",sw.CpuTime()*cpn);
00448   sw.Start();
00449   for (i=0;i<N;i++) {
00450      x = unr2.SampleDiscr();
00451   }
00452   printf(" %8.3f",sw.CpuTime()*cpn);
00453   sw.Start();
00454   for (i=0;i<N;i++) {
00455      x = unr3.SampleDiscr();
00456   }
00457   printf(" %8.3f\n",sw.CpuTime()*cpn);
00458 
00459 
00460   delete r0;
00461   delete r1;
00462   delete r2;
00463   delete r3;
00464   gRandom = rsave;
00465 
00466 #ifdef LATER  
00467   // Binomial
00468   unr0.InitBinomial(15,0.5);
00469   unr1.InitBinomial(15,0.5);
00470   unr2.InitBinomial(15,0.5);
00471   unr3.InitBinomial(15,0.5);
00472 
00473   sw.Start();
00474   for (i=0;i<N;i++) {
00475      x = unr0.SampleDiscr();
00476   }
00477   printf("BinomialUN(15,0.5) %8.3f",sw.CpuTime()*cpn);
00478   sw.Start();
00479   for (i=0;i<N;i++) {
00480      x = unr1.SampleDiscr();
00481   }
00482   printf(" %8.3f",sw.CpuTime()*cpn);
00483   sw.Start();
00484   for (i=0;i<N;i++) {
00485      x = unr2.SampleDiscr();
00486   }
00487   printf(" %8.3f",sw.CpuTime()*cpn);
00488   sw.Start();
00489   for (i=0;i<N;i++) {
00490      x = unr3.SampleDiscr();
00491   }
00492   printf(" %8.3f\n",sw.CpuTime()*cpn);
00493 #endif
00494 
00495 }
00496 
00497 int testRandom3() {
00498 
00499   Float_t RefValue[] = // running using a seed of 4357 ROOT 5.13.07 and checked with GSL 1.8 
00500      {  0.999741749, 0.162909875, 0.282617805, 0.947201082, 0.231656543, 0.484973614, 0.957476957, 0.744305343,
00501         0.540043658, 0.739952981, 0.759943798, 0.658636614, 0.315637622, 0.804403015, 0.519672115, 0.168572422,
00502         0.47552973, 0.392313994, 0.221667687, 0.213190459,0.0303352042,  0.33353925, 0.194148851, 0.943716781,
00503         0.579931675, 0.898304858, 0.665563931,  0.49861031, 0.560628257, 0.182284646, 0.296525531, 0.117408933,
00504         0.0629176658, 0.648125575, 0.725418529, 0.637131158, 0.713885062,0.0995762432, 0.699267196,  0.10781247,
00505         0.129242751, 0.502403039, 0.207779906, 0.288910306,0.0831747944, 0.128124215, 0.547371411,0.0823195996,
00506         0.292141427, 0.891623737, 0.227117839, 0.431845463, 0.140733001, 0.400392135, 0.686946901, 0.170670911,
00507         0.440820868, 0.045336565, 0.311296414, 0.506181051,  0.18241084, 0.511032015, 0.740788205, 0.365988627,
00508         0.160808837, 0.460106785, 0.627836472, 0.677603688, 0.698196523, 0.478536868,0.0901075942, 0.338728522,
00509         0.0952137967, 0.436541964, 0.474673352, 0.419245926, 0.777536852, 0.624610565,  0.98043655, 0.370430201,
00510         0.830812636, 0.140806447, 0.744085307,  0.82973968, 0.391104318, 0.621956392, 0.346699478,0.0461695245,
00511         0.613066321, 0.567374048, 0.498894026, 0.723802079, 0.144550525,0.0423031633, 0.310787023, 0.121641154,
00512         0.242069671, 0.381058855, 0.440128537, 0.599795902, 0.644574654, 0.432626217, 0.555968262, 0.716841168,
00513         0.642362515, 0.685776725,0.0961581462, 0.122933464,0.0569974151, 0.820072044, 0.125539286, 0.315745071,
00514         0.180566925, 0.142227219, 0.664429613, 0.685189223, 0.191001933, 0.436343019, 0.964459225,  0.86816359,
00515         0.130879965,  0.48444228, 0.374654451, 0.900475122, 0.178656787, 0.679635131,  0.62287431,  0.98365595,
00516         0.44071478, 0.804737277, 0.994845061, 0.541550961, 0.255905455, 0.638945635,  0.57591027,  0.25872142,
00517         0.191593001, 0.445663047, 0.149266509, 0.996723689, 0.121762222,  0.65153928,0.0277950978, 0.389977602,
00518         0.827913044, 0.283813907, 0.610203644,  0.23641275,  0.41082105, 0.677714617, 0.847126588, 0.649256228,
00519         0.0813826511, 0.120830484, 0.479199264, 0.777878358, 0.471977701, 0.943337511, 0.980800992, 0.334554731,
00520         0.202667924, 0.342841234, 0.653544244, 0.682758797,  0.60993614,0.0999271029, 0.766254981, 0.735581528,
00521         0.24113914, 0.263178711, 0.960869899, 0.423395737, 0.336058146,0.000249497825, 0.868841017,0.00375315035,
00522         0.165846311,0.0118208411, 0.606455074, 0.729972019, 0.613824557, 0.965768184, 0.497098261, 0.529885403,
00523         0.461607532, 0.713033701, 0.579959768, 0.682802555, 0.953921514,0.0236552036, 0.280110147, 0.869526353,
00524         0.299333274, 0.319553603, 0.300951709, 0.941111486, 0.848127064, 0.753346129, 0.538244087, 0.408481381,
00525         0.212371316,0.0761404021, 0.289934908,0.0197818337, 0.241247899, 0.384619165, 0.454906886, 0.373982521,
00526         0.440188796, 0.117896808, 0.805429845, 0.164892641, 0.282529936, 0.172685399,  0.93584233,  0.68095306,
00527         0.133696739, 0.254761223, 0.399444876, 0.369235365, 0.726361892, 0.277837459, 0.693569104, 0.500354689,
00528         0.118405538, 0.151303335, 0.681446943, 0.720665918, 0.979646939, 0.696779111, 0.557210072, 0.680821482,
00529         0.95535205, 0.598208956, 0.770453895, 0.913597486, 0.658958649, 0.670974613, 0.578185175,  0.95303929,
00530         0.162923458, 0.335056986, 0.951824704, 0.109661644, 0.619302303, 0.956816742, 0.985243094,0.0707377489,
00531         0.50233039, 0.680721226, 0.553320066, 0.587005581, 0.691620562,  0.46264791, 0.574254294, 0.072890088,
00532         0.638266518, 0.387757288, 0.220960217,0.00223180233, 0.495656775, 0.191316523, 0.022265008, 0.903589021,
00533         0.738628175,  0.44453089, 0.417702243, 0.760861122, 0.437753222, 0.190982861, 0.577112962, 0.132688343,
00534         0.317824347,  0.48691649, 0.939091069, 0.933946281, 0.073660135, 0.612436295, 0.514748724, 0.624663582,
00535         0.130645262, 0.645210441,  0.13414855, 0.652925968, 0.265210009, 0.381805269,  0.59021506, 0.669704082,
00536         0.55433248,0.0195047602, 0.184346962, 0.991180462, 0.573677764, 0.637762085, 0.594857598, 0.515244688,
00537         0.330693509,  0.39674245,  0.88396548, 0.771485266, 0.599075381,0.0247266297,0.0122587895, 0.698452319,
00538         0.265991009, 0.736700721, 0.999972619, 0.749792316, 0.484955589, 0.823700529,  0.62277709, 0.902512094,
00539         0.0565051287, 0.739077389,  0.37617622, 0.036800765, 0.776198219, 0.837354186,  0.34508193,0.0818426476,
00540         0.222621545, 0.152476319, 0.401177195, 0.531612608, 0.811706602,0.0407775661, 0.117889008, 0.575189965,
00541         0.832362208, 0.204641853, 0.238721773,   0.9969287, 0.258590596, 0.892055968, 0.846859788, 0.306583706,
00542         0.0333624918, 0.706420498, 0.193615608, 0.508978138,0.0215451468, 0.672732793, 0.813562444, 0.807284052,
00543         0.481526843, 0.537519095, 0.780848606, 0.335848908, 0.699259371, 0.425855299, 0.825240663, 0.945613692,
00544         0.55484125, 0.710495188, 0.378360366, 0.648338731,0.0456727168, 0.155477323, 0.885353968, 0.721565725,
00545         0.961667201, 0.430300885, 0.132031354, 0.439331209, 0.467187736, 0.410083217, 0.277196711, 0.278509559,
00546         0.954620806, 0.804357491, 0.968510466, 0.999722791, 0.947160283, 0.248551138,0.0067049861, 0.444727315,
00547         0.674048778, 0.496480361,0.0210092501, 0.831763222, 0.108545852,0.0931516394,  0.89020564, 0.445945211,
00548         0.906906768, 0.554039821, 0.759434349, 0.815551384, 0.532968503,0.0551351462,0.0539856541,  0.89918819,
00549         0.146907374, 0.482647314,0.0673029809, 0.281161865, 0.932849165, 0.507317933, 0.564503014,   0.8007132,
00550         0.645887499, 0.309219498,0.0478066066,  0.25196583, 0.713881142, 0.670994017,  0.60528576, 0.148271899,
00551         0.79525035, 0.665277353, 0.854302043, 0.810533677,0.0711439839,0.0687935678, 0.890466573, 0.758045957,
00552         0.0703105873, 0.852094478, 0.775356902, 0.684895203, 0.234552787, 0.461575694, 0.936435457, 0.664946419,
00553         0.45967959,  0.88782351, 0.574622261,0.0301686234, 0.767354721, 0.345478555, 0.609123143,  0.21754287,
00554         0.643760561, 0.571392649, 0.802311049, 0.962335547, 0.401769856, 0.996553418, 0.745945812, 0.448411183,
00555         0.39578428, 0.123389926, 0.532614913, 0.833379602,  0.91767313, 0.825607567,   0.4459154, 0.267136201,
00556         0.6643989, 0.766860694, 0.665968275, 0.503955105, 0.835153702, 0.622405379, 0.457538918, 0.554983278,
00557         0.36581371, 0.656302231, 0.917038669, 0.276054591, 0.121214441, 0.966178254, 0.697439008, 0.443547789,
00558         0.630195824, 0.368346675, 0.238191956, 0.300273821, 0.710332172,0.0474748381, 0.492525443,0.0812539798,
00559         0.122016782,  0.99310218, 0.355091027, 0.764863731, 0.904099543, 0.396109613, 0.817134856, 0.348974222,
00560         0.266193634, 0.367501958, 0.752316213, 0.587800024, 0.489421095, 0.673474061, 0.328296139, 0.853945839,
00561         0.832380736, 0.159588686, 0.322411022, 0.950173707, 0.095376712, 0.231019855, 0.860607752, 0.359627192,
00562         0.984843699,0.0319756679, 0.828649914,  0.51680949, 0.489407924, 0.963977298, 0.960131739, 0.681816791,
00563         0.860788169, 0.455829282, 0.332390656,0.0591498043, 0.452245977, 0.217354216,  0.34560744, 0.549971993,
00564         0.317622252, 0.892976443,  0.49004545,  0.25647901, 0.968998638, 0.910636465, 0.226717598, 0.327828572,
00565         0.28670209, 0.142515054,0.0992817392, 0.192332409, 0.308376869, 0.871415959, 0.391148786, 0.788660882,
00566         0.200816041, 0.986475959, 0.882862126, 0.109862451, 0.354283255, 0.555742682, 0.690698458, 0.643815752,
00567         0.363104285,0.0788627111, 0.200820414,  0.71697353, 0.744353746,  0.76763643, 0.245442451, 0.668009119,
00568         0.886989377, 0.366849931, 0.531556628, 0.502843979,  0.31454367, 0.622541364,0.0199038582, 0.676355134,
00569         0.429818622, 0.232835212, 0.987619457, 0.306572135, 0.494637038, 0.748614893, 0.891843561,0.0452854959,
00570         0.427561072, 0.226978442, 0.484072985,  0.16464563,0.0898074883, 0.384263737,0.0238354723, 0.329734547,
00571         0.531230736, 0.476683361, 0.877482474, 0.455501628, 0.497302495, 0.396184301, 0.886124728, 0.736070092,
00572         0.108917595, 0.397921902, 0.842575021,  0.82620032, 0.936655165,  0.24558961, 0.639688616, 0.493335031,
00573         0.0734495069, 0.780138101,0.0421121232, 0.701116477, 0.940523267,  0.70054817, 0.776760272, 0.192742581,
00574         0.0069252688, 0.842983626, 0.919324176, 0.242083269, 0.190100674, 0.735084639, 0.164522319,  0.99030645,
00575         0.98284794, 0.657169539,0.0187736442, 0.759596482, 0.357567611, 0.509016344, 0.738899681, 0.567923164,
00576         0.289056634,  0.41501714, 0.981054561, 0.365884479, 0.517878261, 0.844209022, 0.968122653, 0.258894528,
00577         0.478310441, 0.437340986, 0.379398001, 0.203081884, 0.550820748, 0.255542723, 0.550098031, 0.870477939,
00578         0.241230214, 0.157108238, 0.218260827, 0.116277737, 0.749018275, 0.158290659, 0.476353907, 0.545327323,
00579         0.878978121,0.0171442169, 0.542981987, 0.318018082, 0.788805343, 0.871721374, 0.738490409,0.0923330146,
00580         0.301398643, 0.637103286, 0.571564271, 0.712810342, 0.644289242, 0.230476008, 0.971695586, 0.966159428,
00581         0.291883909, 0.175285818, 0.312882552,  0.98465128, 0.568391354, 0.844468564, 0.144433908,  0.45994061,
00582         0.607897905, 0.184122705, 0.342805493, 0.606432998, 0.838196585, 0.186188518,0.0302744689, 0.307391858,
00583         0.125286029, 0.270394965, 0.874161481, 0.370509557,  0.89423337, 0.407995674, 0.881878469, 0.647951238,
00584         0.236986727, 0.528807336, 0.293731542,0.0943204253, 0.934538626, 0.121679332,  0.34968176,0.0670268578,
00585         0.642196769, 0.692447138, 0.334926733, 0.374244194, 0.313885051, 0.538738295, 0.098592523, 0.490514225,
00586         0.32873567, 0.709725794,  0.88169803, 0.393000481, 0.854243273, 0.463776593,  0.52705639, 0.493309892,
00587         0.267784336, 0.583077476,0.0573514167, 0.959336368, 0.771417173,0.0427184631, 0.498433369,0.0522942701,
00588         0.56155145, 0.960361909, 0.619817314, 0.528628368, 0.698235179, 0.186162042, 0.553998168, 0.666120292,
00589         0.152731049, 0.948750157, 0.186825789, 0.580512664, 0.851024442, 0.106865844, 0.675861737,  0.79604524,
00590         0.657646103,0.00934952381, 0.206267588, 0.636420368,0.0382564603,  0.67771025, 0.677917925, 0.671684269,
00591         0.396317716, 0.661597047, 0.633360383, 0.962124239, 0.992711418,0.0993448263,0.0678932741, 0.426013152,
00592         0.947045502, 0.708326009, 0.466817846,0.0448362886, 0.748580922, 0.678370694, 0.210921343, 0.398490306,
00593         0.953675585,0.0289022848, 0.935766569, 0.846930474, 0.662760176, 0.867910903, 0.652359324,  0.45280494,
00594         0.305228982, 0.352034987, 0.279643402, 0.236045594,0.0270034608, 0.652062389, 0.712000227, 0.619930867,
00595         0.125439078, 0.452789963,  0.92233151, 0.120844359, 0.403808975, 0.260290446, 0.778843638,   0.6678412,
00596         0.0267894373, 0.491332301, 0.915060888, 0.704025347, 0.628200853, 0.578338467, 0.629156416, 0.730410649,
00597         0.641318334, 0.463709335, 0.614291239, 0.254470656, 0.808682692,  0.22898373, 0.450477996, 0.874235142,
00598         0.202773906, 0.523711192, 0.126518266, 0.579402899,  0.26188467, 0.207769057,  0.55283816, 0.851395364,
00599         0.513594437, 0.558259845, 0.666148535, 0.998974657, 0.178274074, 0.116739636,0.0684255431, 0.622713377,
00600         0.31448295, 0.889827933,  0.80647766, 0.429916949, 0.524695458,  0.45267553, 0.630743121, 0.566594485,
00601         0.958860663, 0.908052286, 0.700898262, 0.377025384, 0.683796226, 0.198088462, 0.617400699, 0.413726158,
00602         0.823588417, 0.755577948, 0.703097317, 0.364294278, 0.819786986, 0.751581763, 0.048769509, 0.528569003,
00603         0.616748192, 0.270942831, 0.800841747, 0.235174223, 0.903786552, 0.258801569, 0.191336412, 0.012410342,
00604         0.853413998, 0.621008712, 0.855861931, 0.140106201, 0.872687964, 0.708839735,0.0926409892,0.0207504195,
00605         0.782636518,0.0300825236, 0.504610632,0.0816221782, 0.773493745, 0.872577282, 0.880031248, 0.883524299,
00606         0.872427328, 0.458722225, 0.902298841, 0.547904952,0.0559884352, 0.591179888, 0.563941709, 0.776130076,
00607         0.295569778,0.0408536533, 0.398567183,  0.28227462, 0.806716321, 0.507159362, 0.688150965,  0.49466404,
00608         0.45454604, 0.421480091,0.0392517329,0.0911962031, 0.393815309, 0.135373195, 0.968650583, 0.811676111,
00609         0.325965411, 0.961999178, 0.100281202, 0.102924612,  0.30725909,  0.33368206, 0.857966134, 0.522921736,
00610         0.615500041, 0.981558684, 0.797484739, 0.198809674,  0.45670419, 0.570970797, 0.214908696, 0.686433314,
00611         0.278602115, 0.179739848, 0.397497946, 0.162858935, 0.802621762,0.0836459133, 0.638270752, 0.230856518,
00612         0.580094379, 0.864292514, 0.932738287, 0.821393124, 0.480590473, 0.636373016, 0.181508656, 0.469200501,
00613         0.309276441, 0.668810431, 0.722341161, 0.574856669, 0.527854513, 0.809231559, 0.986882661, 0.323860496,
00614         0.606396459, 0.759558966,  0.79096818,0.0699298142, 0.550465414,0.00929828244, 0.784629475, 0.689044114,
00615         0.963588091, 0.516441598, 0.357178305, 0.482336892, 0.429959602, 0.996306147, 0.601176011, 0.785004207,
00616         0.970542121, 0.487854549,0.0949267522, 0.979331773, 0.120877739, 0.630260336,  0.19424754, 0.213081703,
00617         0.0145987798, 0.366671115, 0.340100777, 0.721786347, 0.367533113,0.0210335371, 0.131687992, 0.586759676,
00618         0.73360464, 0.863635151, 0.136994646,0.0524269778, 0.406223408, 0.241656947, 0.472450703, 0.872215979,
00619         0.454719233,0.0715790696, 0.314061244, 0.492823114, 0.741721134, 0.694783663, 0.982867872, 0.319748137,
00620         0.804203704,0.0534678153, 0.746155348, 0.303474931,0.0930815139, 0.934531664, 0.746868186, 0.100048471,
00621         0.720296508,  0.21075374,  0.96309675, 0.749189411, 0.739621932, 0.510072327,0.0872929865, 0.650020469,
00622         0.0823648495, 0.726920745, 0.532618265, 0.749305866,  0.86126694,0.0346994482,0.0931224583, 0.655257095,
00623         0.959517847, 0.487057231, 0.859895745, 0.084794421, 0.718541715, 0.850918328, 0.818884782,  0.71627446,
00624         0.40822393,  0.63658567, 0.523838703, 0.372038872, 0.353426097, 0.598049047,0.0974868746, 0.276353038 
00625      };
00626 
00627      Int_t rc1 = 0;
00628      Int_t rc2 = 0;
00629      TRandom3 r(4357);
00630      Float_t x;
00631      Int_t i;
00632 
00633      // check whether the sequence is ok or not
00634      for (i=0;i<1000;i++) {
00635        x = r.Rndm();
00636        // printf("%e ",x-RefValue[i]); if(i%8==7) printf("\n");
00637        if (TMath::Abs(x-RefValue[i]) > 10e-8) {
00638          printf("i=%d x=%.8f but should be %.8f\n",i,x,RefValue[i]);
00639          rc1 += 1;
00640        }
00641      }
00642 
00643      // check whether a state can be saved and restored
00644      TFile *file = new TFile("random3.root","RECREATE");
00645      file->SetCompressionLevel(0);
00646      r.Write("r");
00647      delete file;
00648      file = new TFile("random3.root");
00649      TRandom3 *rs = (TRandom3*) file->Get("r");
00650      for (i=0;i<1000;i++) {
00651        if (r.Rndm() - rs->Rndm() != 0) rc2 += 1;
00652      }
00653      if (rc2 != 0) printf("state restoration failed\n");
00654 
00655      return rc1 + rc2;
00656    }
00657 
00658 
00659 void testrandom()
00660 {
00661   testRandom3();
00662   testAll();
00663 }

Generated on Tue Jul 5 15:44:50 2011 for ROOT_528-00b_version by  doxygen 1.5.1