xo-alloc/xo-randomgen/include/xo/randomgen/bernoulligen.hpp
Roland Conybeare ae78de305f Add 'xo-randomgen/' from commit '44a31724ec'
git-subtree-dir: xo-randomgen
git-subtree-mainline: 57170366da
git-subtree-split: 44a31724ec
2025-05-10 18:54:18 -05:00

29 lines
1,006 B
C++

/* @file bernoulligen.hpp */
#pragma once
#include "generator.hpp"
#include <random>
namespace xo {
namespace rng {
/* Engine: e.g. xo::rng::xoshiro256ss or std::mt19937 */
template <class Engine>
class bernoulligen : public generator<Engine, std::bernoulli_distribution<double>> {
public:
using generator_type = generator<Engine, std::bernoulli_distribution<double>>;
template <class Engine>
static generator_type make(Engine engine, double prob) {
return generator_type::make(std::move(engine),
std::bernoulli_distribution<double>(prob));
}
template <class Engine>
static generator_type conflip(Engine engine) {
return generator_type::make(std::move(engine),
std::bernoulli_distribution<double>(0.5));
}
};
} /*namespace rng*/
} /*namespace xo*/