18 #ifndef PIC_POINT_SAMPLERS_SAMPLER_MONTE_CARLO_HPP 19 #define PIC_POINT_SAMPLERS_SAMPLER_MONTE_CARLO_HPP 23 #include "../base.hpp" 25 #include "../util/math.hpp" 38 for(
int i = 0; i < nSamples; i++) {
39 for(
unsigned int j = 0; j < N; j++) {
40 float val =
getRandom((*m)()) * 2.0f - 1.0f;
41 samples.push_back(val);
54 std::vector<float> &samples)
56 int n = int(powf(
float(nSamples), 1 /
float(N))) + 1;
60 for(
unsigned int i = 1; i < N; i++) {
64 for(
int i = 0; i < nSamples; i++) {
67 for(
unsigned int j = 0; j < N; j++) {
68 int k = (i / div) % n;
69 float val = ((
getRandom((*m)()) + k) / n_f) * 2.0f - 1.0f;
70 samples.push_back(val);
84 int n = int(powf(
float(nSamples), 1 /
float(N))) + 1;
87 for(
unsigned int i = 1; i < N; i++) {
91 for(
int i = 0; i < nSamples; i++) {
94 for(
unsigned int j = 0; j < N; j++) {
95 int k = ((i / div)) % n;
96 float val = (float(k) / float(n)) * 2.0f - 1.0f;
97 samples.push_back(val);
PIC_INLINE void getMonteCarloStratifiedSamples(std::mt19937 *m, int nSamples, std::vector< float > &samples)
getMonteCarloStratifiedSamples
Definition: sampler_monte_carlo.hpp:53
PIC_INLINE void getMonteCarloSamples(std::mt19937 *m, int nSamples, std::vector< float > &samples)
getMonteCarloSamples
Definition: sampler_monte_carlo.hpp:36
#define PIC_INLINE
Definition: base.hpp:33
PIC_INLINE void getPatternMethodSamples(int nSamples, std::vector< float > &samples)
getPatternMethodSampler
Definition: sampler_monte_carlo.hpp:82
Definition: bilateral_separation.hpp:25
PIC_INLINE float getRandom(unsigned int n)
Random returns a number in [0, 2^32 - 1] to a float in [0, 1].
Definition: math.hpp:138