00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
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
00371 TUnuran unr0(r0);
00372 TUnuran unr1(r1);
00373 TUnuran unr2(r2);
00374 TUnuran unr3(r3);
00375
00376
00377 TUnuranContDist dist(f1);
00378
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
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
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[] =
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
00634 for (i=0;i<1000;i++) {
00635 x = r.Rndm();
00636
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
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 }