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);
24 std::vector<Real> pts(nSamp*dim_,
zero), tmp(dim_+1,
zero);
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));