# HG changeset patch # User deba # Date 1206030347 0 # Node ID 9c00e972cdfd18fd09e9c0c0b4c1cfac3df7c00a # Parent 1cbd377bffb348013763da9f172963ef5663ccc5 Back porting commit 81563e019fa4 diff -r 1cbd377bffb3 -r 9c00e972cdfd lemon/random.h --- a/lemon/random.h Thu Mar 20 11:38:01 2008 +0000 +++ b/lemon/random.h Thu Mar 20 16:25:47 2008 +0000 @@ -578,6 +578,26 @@ return *this; } + /// \brief Seeding random sequence + /// + /// Seeding the random sequence. The current number type will be + /// converted to the architecture word type. + template + void seed(Number seed) { + _random_bits::Initializer::init(core, seed); + } + + /// \brief Seeding random sequence + /// + /// Seeding the random sequence. The given range should contain + /// any number type and the numbers will be converted to the + /// architecture word type. + template + void seed(Iterator begin, Iterator end) { + typedef typename std::iterator_traits::value_type Number; + _random_bits::Initializer::init(core, begin, end); + } + /// \brief Returns a random real number from the range [0, 1) /// /// It returns a random real number from the range [0, 1). The diff -r 1cbd377bffb3 -r 9c00e972cdfd test/random_test.cc --- a/test/random_test.cc Thu Mar 20 11:38:01 2008 +0000 +++ b/test/random_test.cc Thu Mar 20 16:25:47 2008 +0000 @@ -33,4 +33,9 @@ a=rnd.gamma(4); //Does gamma work with integer k? a=rnd.gamma(4.0,0); + + lemon::rnd.seed(100); + lemon::rnd.seed(seed_array, seed_array + + (sizeof(seed_array) / sizeof(seed_array[0]))); + return 0; }