Example of generating quasi-random numbers.
ª#+
Processing /mnt/vdb/lsf/workspace/root-makedoc/rootspi/rdoc/src/master/tutorials/math/quasirandom.C...
#include <iostream>
using namespace ROOT::Math;
int quasirandom(
int n = 10000,
int skip = 0) {
TH2D * h0 =
new TH2D(
"h0",
"Pseudo-random Sequence",200,0,1,200,0,1);
TH2D * h1 =
new TH2D(
"h1",
"Sobol Sequence",200,0,1,200,0,1);
TH2D * h2 =
new TH2D(
"h2",
"Niederrer Sequence",200,0,1,200,0,1);
double x[2];
for (
int i = 0; i <
n; ++i) {
}
std::cout << "Time for gRandom ";
for (
int i = 0; i <
n; ++i) {
}
std::cout << "Time for Sobol ";
for (
int i = 0; i <
n; ++i) {
}
std::cout << "Time for Niederreiter ";
TCanvas * c1 = new TCanvas("c1","Random sequence",600,1200);
c1->Divide(1,3);
c1->cd(1);
c1->cd(2);
c1->cd(3);
int nzerobins0 = 0;
int nzerobins1 = 0;
int nzerobins2 = 0;
}
}
std::cout << "number of empty bins for pseudo-random = " << nzerobins0 << std::endl;
std::cout <<
"number of empty bins for " <<
r1.Name() <<
"\t= " << nzerobins1 << std::endl;
std::cout <<
"number of empty bins for " <<
r2.Name() <<
"\t= " << nzerobins2 << std::endl;
int iret = 0;
if (nzerobins1 >= nzerobins0 ) iret += 1;
if (nzerobins2 >= nzerobins0 ) iret += 2;
return iret;
}
- Author
- Lorenzo Moneta
Definition in file quasirandom.C.