/* * © Copyright 2014 – Urheberrechtshinweis * Alle Rechte vorbehalten / All Rights Reserved * * Programmcode ist urheberrechtlich geschuetzt. * Das Urheberrecht liegt, soweit nicht ausdruecklich anders gekennzeichnet, bei Frank Ebner. * Keine Verwendung ohne explizite Genehmigung. * (vgl. § 106 ff UrhG / § 97 UrhG) */ #ifndef RECTANGULAR_H #define RECTANGULAR_H #include #include #include "../random/RandomGenerator.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