#ifndef RECTANGULAR_H #define RECTANGULAR_H #include #include #include "../Random.h" #include "../../Assertions.h" #include "Normal.h" namespace Distribution { /** normal distribution */ template class Rectangular { private: const T mu; const T h; const T width; public: /** ctor */ Rectangular(const T mu, const T width) : mu(mu), h(1.0/width), width(width) { } /** get probability for the given value */ T getProbability(const T val) const { const T diff = std::abs(val - mu); return (diff < width/2) ? (h) : (0.0); } /** get the probability for the given value */ static T getProbability(const T mu, const T width, const T val) { Rectangular dist(mu, width); return dist.getProbability(val); } }; } #endif // RECTANGULAR_H