diff options
Diffstat (limited to 'rqmc.hpp')
| -rw-r--r-- | rqmc.hpp | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -79,22 +79,26 @@ std::vector<double> monte_carlo(int n, Fct f, L X) //Les classes de quasi-mean - +template <typename LDS> struct quasi_gaussian : public var_alea<std::vector<double> > { quasi_gaussian (int d, double mean = 0, double std =1) - : d(d), mean(mean), std(std), sob(d) {}; + : d(d), mean(mean), std(std), s(d), U(0,1), seed(d) { + for(int i=0; i<d; i++) {seed[i]=U();} + }; std::vector<double> operator ()(){ - std::vector<double> result = sob(); + std::vector<double> result = s(); for(int i=0;i<d; i++){ - result[i] = mean + gsl_cdf_gaussian_Pinv(result[i], std); + result[i] = mean + gsl_cdf_gaussian_Pinv(frac_part(result[i]+seed[i]), std); } return value = result; } private: int d; double mean, std; - sobol sob; + LDS s; + uniform U; + std::vector<double> seed; }; |
