Monte Carlo Integration Library 1.0
High-performance Monte Carlo methods for numerical integration and optimization
uniformProposal.hpp
Go to the documentation of this file.
1
9#ifndef MONTECARLO_1_UNIFORM_PROPOSAL_HPP
10#define MONTECARLO_1_UNIFORM_PROPOSAL_HPP
11
12#include "proposal.hpp"
13#include "../domains/integration_domain.hpp"
14
15#include <array>
16#include <random>
17#include <utility>
18
19namespace mc {
20namespace proposals {
21
30template <size_t dim>
31class UniformProposal : public Proposal<dim>
32{
33public:
39
45 mc::geom::Point<dim> sample(std::mt19937& rng) const override;
46
52 double pdf(const mc::geom::Point<dim>&) const override;
53
54private:
56 mutable std::array<std::uniform_real_distribution<double>, dim> dist{};
57 double vol_box;
58};
59
60} // namespace proposals
61} // namespace mc
62
63#include "uniformProposal.tpp"
64
65#endif // MONTECARLO_1_UNIFORM_PROPOSAL_HPP
Abstract base class for N-dimensional integration domains.
N-dimensional point representation.
Definition geometry.hpp:32
Abstract proposal distribution interface.
Definition proposal.hpp:29
Uniform distribution over a domain.
UniformProposal(const mc::domains::IntegrationDomain< dim > &d)
Construct uniform proposal over domain.
double pdf(const mc::geom::Point< dim > &) const override
Evaluate uniform PDF.
mc::geom::Point< dim > sample(std::mt19937 &rng) const override
Sample uniform point from domain.
constexpr int dim
Default dimensionality for integration.
Definition main.cpp:36
Abstract base for probability distributions used in importance sampling.