18 const Real
zero(0), one(1);
20 std::random_device rd;
21 std::mt19937 gen(rd());
22 std::uniform_real_distribution<Real> real_dist(
zero, one);
28 for (
int i = 0; i < nSamp; ++i) {
30 std::generate(tmp.begin()+1,tmp.end()-1,[&]() { return real_dist(gen); });
31 std::sort(tmp.begin(),tmp.end());
32 std::adjacent_difference(tmp.begin(),tmp.end(),tmp.begin());
33 for (
int j = 0; j <
dim_; ++j) pts[j + i*
dim_] = tmp[j+1];
39 int frac = nSamp / nProc;
40 int rem = nSamp % nProc;
41 int N = frac + ((rank < rem) ? 1 : 0);
43 for (
int i = 0; i < rank; ++i) offset += frac + ((i < rem) ? 1 : 0);
44 std::vector<std::vector<Real>> mypts;
45 std::vector<Real> pt(
dim_);
46 for (
int i = 0; i < N; ++i) {
48 for (
int j = 0; j <
dim_; ++j) pt[j] = pts[j + I*
dim_];
52 std::vector<Real> mywts(N, one/
static_cast<Real
>(nSamp));
MonteCarloGenerator(int nSamp, const std::vector< Ptr< Distribution< Real > > > &dist, const Ptr< BatchManager< Real > > &bman, bool use_SA=false, bool adaptive=false, int numNewSamps=0, int seed=123454321)