// Copyright (C) 2010, Guy Barrand. All rights reserved. // See the file tools.license for terms. #ifndef tools_rtausmed #define tools_rtausmed // G.Barrand : not so clear if 0 and 1 are included. // With a simple program, we saw no hits with "if(r.shoot()==0)" or "if(r.shoot()==1)". // (See inlib/tests/rand.cpp). #include "rtausmeui" #include "S_STRING" #include namespace tools { class rtausmed : public rtausmeui { typedef rtausmeui parent; public: TOOLS_SCLASS(tools::rtausmed) public: rtausmed(unsigned int a_seed = 4357):parent(a_seed){} virtual ~rtausmed(){} public: rtausmed(const rtausmed& a_from):parent(a_from){} rtausmed& operator=(const rtausmed& a_from) {parent::operator=(a_from);return *this;} protected: static double two_to_minus_32() { static const double s_v = std::ldexp(1.0,-32); return s_v; } public: double shoot() {return double(parent::shoot()) * two_to_minus_32();} }; } #endif