34 const auto n_steps = 10000;
35 const auto step_size = 0.1;
37 auto target_distribution = [](
double val) ->
double {
return std::pow(std::cos(val), 2.); };
39 double current_angle = 0.;
40 double new_angle = 0.;
42 for (
int i = 0; i < n_steps; ++i)
44 new_angle = rd_engine_->Gaus(current_angle, step_size);
46 if (new_angle < -M_PI_2 || new_angle > M_PI_2)
51 double acceptance_ratio = target_distribution(new_angle) / target_distribution(current_angle);
53 if (rd_engine_->Uniform(0.0, 1.0) < acceptance_ratio)
55 current_angle = new_angle;