#ifndef E_SAMPLER_HPP #define E_SAMPLER_HPP #include #include template struct sampler_tmplt{ RNG m_rng; std::uniform_real_distribution m_dis; sampler_tmplt() : m_rng(), m_dis(0,1){}; sampler_tmplt(uint64_t seed) : m_rng(seed), m_dis(0,1){}; float next1D(){ return m_dis(m_rng); } Eigen::Vector2f next2D(){ return Eigen::Vector2f(m_dis(m_rng), m_dis(m_rng)); } Eigen::Vector3f next3D(){ return Eigen::Vector3f(m_dis(m_rng), m_dis(m_rng), m_dis(m_rng)); } }; using sampler = sampler_tmplt; #endif