Gave rand a constructor that takes a seed value.

This commit is contained in:
Davis King 2012-11-04 15:02:44 -05:00
parent 1b1cf7548c
commit 7f5a22c424
2 changed files with 38 additions and 11 deletions

View File

@ -36,18 +36,15 @@ namespace dlib
rand( rand(
) )
{ {
// prime the generator a bit init();
for (int i = 0; i < 10000; ++i) }
mt();
max_val = 0xFFFFFF; rand (
max_val *= 0x1000000; const std::string& seed_value
max_val += 0xFFFFFF; )
max_val += 0.01; {
init();
set_seed(seed_value);
has_gaussian = false;
next_gaussian = 0;
} }
virtual ~rand( virtual ~rand(
@ -234,6 +231,23 @@ namespace dlib
); );
private: private:
void init()
{
// prime the generator a bit
for (int i = 0; i < 10000; ++i)
mt();
max_val = 0xFFFFFF;
max_val *= 0x1000000;
max_val += 0xFFFFFF;
max_val += 0.01;
has_gaussian = false;
next_gaussian = 0;
}
mt19937 mt; mt19937 mt;
std::string seed; std::string seed;

View File

@ -34,6 +34,19 @@ namespace dlib
- std::bad_alloc - std::bad_alloc
!*/ !*/
rand (
const std::string& seed_value
);
/*!
ensures
- #*this is properly initialized
- #get_seed() == seed_value
- This version of the constructor is equivalent to using
the default constructor and then calling set_seed(seed_value)
throws
- std::bad_alloc
!*/
virtual ~rand( virtual ~rand(
); );
/*! /*!