[Lemon-commits] Balazs Dezso: Seeding random sequence

Lemon HG hg at lemon.cs.elte.hu
Thu Mar 20 20:14:33 CET 2008


details:   http://lemon.cs.elte.hu/hg/lemon/rev/81563e019fa4
changeset: 102:81563e019fa4
user:      Balazs Dezso <deba [at] inf.elte.hu>
date:      Thu Mar 20 17:15:35 2008 +0100
description:
	Seeding random sequence

diffstat:

2 files changed, 28 insertions(+)
lemon/random.h      |   20 ++++++++++++++++++++
test/random_test.cc |    8 ++++++++

diffs (53 lines):

diff -r 70f3967ca6eb -r 81563e019fa4 lemon/random.h
--- a/lemon/random.h	Thu Mar 20 12:12:24 2008 +0000
+++ b/lemon/random.h	Thu Mar 20 17:15:35 2008 +0100
@@ -573,6 +573,26 @@ namespace lemon {
         core.copyState(other.core);
       }
       return *this;
+    }
+
+    /// \brief Seeding random sequence
+    ///
+    /// Seeding the random sequence. The current number type will be
+    /// converted to the architecture word type.
+    template <typename Number>
+    void seed(Number seed) { 
+      _random_bits::Initializer<Number, Word>::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 <typename Iterator>
+    void seed(Iterator begin, Iterator end) { 
+      typedef typename std::iterator_traits<Iterator>::value_type Number;
+      _random_bits::Initializer<Number, Word>::init(core, begin, end);
     }
 
     /// \brief Returns a random real number from the range [0, 1)
diff -r 70f3967ca6eb -r 81563e019fa4 test/random_test.cc
--- a/test/random_test.cc	Thu Mar 20 12:12:24 2008 +0000
+++ b/test/random_test.cc	Thu Mar 20 17:15:35 2008 +0100
@@ -24,6 +24,8 @@
 ///\todo To be extended
 ///
 
+int seed_array[] = {1, 2};
+
 int main()
 {
   double a=lemon::rnd();
@@ -34,4 +36,10 @@ int main()
   //Does gamma work with integer k?
   a=lemon::rnd.gamma(4.0,0);
   a=lemon::rnd.poisson(.5);
+
+  lemon::rnd.seed(100);
+  lemon::rnd.seed(seed_array, seed_array + 
+		  (sizeof(seed_array) / sizeof(seed_array[0])));
+
+  return 0;
 }



More information about the Lemon-commits mailing list