*******************************************************************************/
+#include <climits> // ULONG_MAX
+#include <cmath> // log
#include <cstdlib> // srand, rand, RAND_MAX
#include <ctime> // time
-#include <cmath> // log
-#include <climits> // ULONG_MAX
-#include "random.hh"
+#include "Random.hh"
+
+namespace Mf {
-namespace rng {
-unsigned seed(unsigned theSeed)
+unsigned setSeed(unsigned theSeed)
{
srand(theSeed);
return theSeed;
}
-unsigned seed()
+unsigned setSeed()
{
- return seed(time(0));
+ return setSeed(time(0));
}
template <typename T>
-T get()
+T getRandom()
{
const float ln2 = 0.693147;
static const unsigned bitsPerPiece = std::log(float(RAND_MAX)) / ln2;
template <>
-bool get<bool>()
+bool getRandom<bool>()
{
return rand() % 2;
}
template <typename T>
-T get(T lower, T upper)
+T getRandom(T lower, T upper)
{
- unsigned short randInt = get<unsigned int>();
+ unsigned short randInt = getRandom<unsigned int>();
return lower + T(randInt % (upper - lower + 1));
}
template <>
-float get(float lower, float upper)
+float getRandom(float lower, float upper)
{
- unsigned long randInt = get<unsigned long>();
+ unsigned long randInt = getRandom<unsigned long>();
return (float(randInt) / float(ULONG_MAX)) * (upper - lower) + lower;
}
template <>
-double get(double lower, double upper)
+double getRandom(double lower, double upper)
{
- unsigned long long randInt = get<unsigned long long>();
+ unsigned long long randInt = getRandom<unsigned long long>();
return (double(randInt) / double(ULLONG_MAX)) * (upper - lower) + lower;
}
template <>
-float get()
+float getRandom()
{
- return get<float>(0.0, 1.0);
+ return getRandom<float>(0.0, 1.0);
}
template <>
-double get()
+double getRandom()
{
- return get<double>(0.0, 1.0);
+ return getRandom<double>(0.0, 1.0);
}
-}; // namespace rng
+}; // namespace Mf
/** vim: set ts=4 sw=4 tw=80: *************************************************/