5 #ifndef _SPICA_HALTON_H_
6 #define _SPICA_HALTON_H_
9 #include "core/cobject.h"
10 #include "core/sampler.h"
11 #include "core/random.h"
25 explicit Halton(
int ns = 200,
bool isPermute =
true,
31 double get1D()
override;
33 bool startNextSample()
override;
35 std::unique_ptr<Sampler> clone(
unsigned int seed = 0)
const override;
38 double radicalInverse(
int n,
int base,
const int* p)
const;
40 static const int nPrimes_ = 1000;
46 const std::unique_ptr<int[]> bases_;
47 const std::unique_ptr<int[]> permute_;
48 const std::unique_ptr<double[]> samples_;
52 SPICA_EXPORT_PLUGIN(
Halton,
"Halton sampler");
56 #endif // _SPICA_HALTON_H_
Random number generator with Mersenne twister.
Definition: random.h:17
Random sampler class.
Definition: sampler.h:24
Definition: renderparams.h:27
Randomized Halton sampler for quasi Monte Carlo.
Definition: halton.h:18