12345678910111213141516171819202122 |
- #ifndef E_SAMPLER_HPP
- #define E_SAMPLER_HPP
- #include <xoshiro.hpp>
- #include <Eigen/Core>
- template<typename RNG>
- struct sampler_tmplt{
- RNG m_rng;
- std::uniform_real_distribution<float> 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<xoshiro_256>;
- #endif
|