1#ifndef SCRAN_TESTS_SIMULATE_VECTOR_HPP
2#define SCRAN_TESTS_SIMULATE_VECTOR_HPP
26template<
typename Type_>
28 if constexpr(std::is_unsigned<Type_>::value) {
40template<
typename Type_ =
double>
62 typename RngEngine::result_type
seed = 1234567890;
68template<
typename Type_>
69auto create_simulating_distribution(
const Type_ lower,
const Type_ upper) {
70 if constexpr(std::is_floating_point<Type_>::value) {
71 return std::uniform_real_distribution<Type_>(lower, upper);
73 return std::uniform_int_distribution<Type_>(lower, upper - 1);
78template<
typename Type_ =
double>
79using SimulationParameters = SimulateVectorParameters<Type_>;
95template<
typename Type_ =
double>
98 auto unif = create_simulating_distribution(params.
lower, params.
upper);
99 std::vector<Type_> values(length);
102 for (
auto& v : values) {
106 std::uniform_real_distribution<double> nonzero(0.0, 1.0);
107 for (
auto& v : values) {
108 if (nonzero(rng) <= params.
density) {
Test utilites for libscran.
Definition compare_almost_equal.hpp:12
std::vector< Type_ > simulate_vector(const typename std::vector< Type_ >::size_type length, const SimulateVectorParameters< Type_ > ¶ms)
Definition simulate_vector.hpp:96
constexpr Type_ default_simulation_min()
Definition simulate_vector.hpp:27
std::mt19937_64 RngEngine
Definition simulate_vector.hpp:20
Parameters for simulate_vector().
Definition simulate_vector.hpp:41
RngEngine::result_type seed
Definition simulate_vector.hpp:62
Type_ upper
Definition simulate_vector.hpp:57
double density
Definition simulate_vector.hpp:45
Type_ lower
Definition simulate_vector.hpp:51