diff --git a/TestProject/RNG/model/BoolCsvModel.h b/TestProject/RNG/model/BoolCsvModel.h new file mode 100644 index 0000000..52cc4e6 --- /dev/null +++ b/TestProject/RNG/model/BoolCsvModel.h @@ -0,0 +1,17 @@ +#pragma once +#include +#include +#include +#include +using json = nlohmann::json; + +struct BoolCsvModel : IModel { + ReadCSV::IntData data; + int column; + + BoolCsvModel(const json& params, float) + : data(params["file"].get()) + , column(params["column"].get()) {} + + bool evaluateBool(size_t t) override { return (bool)data(t, column); } +}; diff --git a/TestProject/RNG/model/BoolRandomModel.h b/TestProject/RNG/model/BoolRandomModel.h new file mode 100644 index 0000000..3e7dc36 --- /dev/null +++ b/TestProject/RNG/model/BoolRandomModel.h @@ -0,0 +1,14 @@ +#pragma once +#include +#include +#include +using json = nlohmann::json; + +struct BoolRandomModel : IModel { + float prob_true; + BoolRandomModel(const json& params, float defaultVal) + : prob_true(params.value("prob_true", 0.5f)) {} + bool evaluateBool(size_t) override { + return (double)rand() / RAND_MAX < prob_true; + } +}; diff --git a/TestProject/RNG/model/BoolToggleModel.h b/TestProject/RNG/model/BoolToggleModel.h new file mode 100644 index 0000000..217cc4f --- /dev/null +++ b/TestProject/RNG/model/BoolToggleModel.h @@ -0,0 +1,13 @@ +#pragma once +#include +#include +using json = nlohmann::json; + +struct BoolToggleModel : IModel { + int period_ticks; + BoolToggleModel(const json& params, float) + : period_ticks(params.value("period_ms", 2000) / 20) {} + bool evaluateBool(size_t t) override { + return (t / period_ticks) % 2 == 0; + } +};