[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