57 lines
1.1 KiB
C++
57 lines
1.1 KiB
C++
/*
|
||
* © 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 <cmath>
|
||
#include <random>
|
||
#include "../random/RandomGenerator.h"
|
||
#include "../../Assertions.h"
|
||
#include "Normal.h"
|
||
|
||
namespace Distribution {
|
||
|
||
/** normal distribution */
|
||
template <typename T> 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<T> dist(mu, width);
|
||
return dist.getProbability(val);
|
||
}
|
||
|
||
};
|
||
|
||
}
|
||
|
||
|
||
#endif // RECTANGULAR_H
|