eis/TestProject/RNG/model/SpikeModel.h

20 lines
558 B
C
Raw Permalink Normal View History

#pragma once
#include <TestProject/RNG/model/IModel.h>
#include <nlohmann/json.hpp>
#include <cstdlib>
using json = nlohmann::json;
struct SpikeModel : IModel {
float base, amplitude, probability;
SpikeModel(const json& params, float defaultVal)
: base(defaultVal)
, amplitude(params.value("amplitude", 1.0f))
, probability(params.value("probability", 0.01f)) {}
float evaluate(size_t) override {
if ((double)rand() / RAND_MAX < probability) {
return base + ((rand() % 2) ? amplitude : -amplitude);
}
return base;
}
};