20 lines
558 B
C
20 lines
558 B
C
#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;
|
|
}
|
|
};
|