#pragma once #include #include #include 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; } };