summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/rand/rand_kernel_abstract.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/rand/rand_kernel_abstract.h')
-rw-r--r--ml/dlib/dlib/rand/rand_kernel_abstract.h218
1 files changed, 218 insertions, 0 deletions
diff --git a/ml/dlib/dlib/rand/rand_kernel_abstract.h b/ml/dlib/dlib/rand/rand_kernel_abstract.h
new file mode 100644
index 000000000..67af27a9e
--- /dev/null
+++ b/ml/dlib/dlib/rand/rand_kernel_abstract.h
@@ -0,0 +1,218 @@
+// Copyright (C) 2003 Davis E. King (davis@dlib.net)
+// License: Boost Software License See LICENSE.txt for the full license.
+#undef DLIB_RAND_KERNEl_ABSTRACT_
+#ifdef DLIB_RAND_KERNEl_ABSTRACT_
+
+#include <string>
+#include "../uintn.h"
+
+namespace dlib
+{
+
+
+ class rand
+ {
+
+ /*!
+ INITIAL VALUE
+ get_seed() == ""
+
+
+ WHAT THIS OBJECT REPRESENTS
+ This object represents a pseudorandom number generator.
+ !*/
+
+ public:
+
+
+ rand(
+ );
+ /*!
+ ensures
+ - #*this is properly initialized
+ throws
+ - std::bad_alloc
+ !*/
+
+ rand (
+ time_t seed_value
+ );
+ /*!
+ ensures
+ - #*this is properly initialized
+ - #get_seed() == cast_to_string(seed_value)
+ - This version of the constructor is equivalent to using
+ the default constructor and then calling set_seed(cast_to_string(seed_value))
+ throws
+ - 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(
+ );
+ /*!
+ ensures
+ - all memory associated with *this has been released
+ !*/
+
+ void clear(
+ );
+ /*!
+ ensures
+ - #*this has its initial value
+ throws
+ - std::bad_alloc
+ if this exception is thrown then *this is unusable
+ until clear() is called and succeeds
+ !*/
+
+ const std::string& get_seed (
+ );
+ /*!
+ ensures
+ - returns the string currently being used as the random seed.
+ !*/
+
+ void set_seed (
+ const std::string& value
+ );
+ /*!
+ ensures
+ - #get_seed() == value
+ !*/
+
+ unsigned char get_random_8bit_number (
+ );
+ /*!
+ ensures
+ - returns a pseudorandom number in the range 0 to 255
+ !*/
+
+ uint16 get_random_16bit_number (
+ );
+ /*!
+ ensures
+ - returns a pseudorandom number in the range 0 to 2^16-1
+ !*/
+
+ uint32 get_random_32bit_number (
+ );
+ /*!
+ ensures
+ - returns a pseudorandom number in the range 0 to 2^32-1
+ !*/
+
+ uint64 get_random_64bit_number (
+ );
+ /*!
+ ensures
+ - returns a pseudorandom number in the range 0 to 2^64-1
+ !*/
+
+ float get_random_float (
+ );
+ /*!
+ ensures
+ - returns a random float number N where: 0.0 <= N < 1.0.
+ !*/
+
+ double get_random_double (
+ );
+ /*!
+ ensures
+ - returns a random double number N where: 0.0 <= N < 1.0.
+ !*/
+
+ double get_double_in_range (
+ double begin,
+ double end
+ );
+ /*!
+ requires
+ - begin <= end
+ ensures
+ - if (begin < end) then
+ - returns a random double number N where: begin <= N < end.
+ - else
+ - returns begin
+ !*/
+
+ long long get_integer_in_range(
+ long long begin,
+ long long end
+ );
+ /*!
+ requires
+ - begin <= end
+ ensures
+ - returns a random integer selected from the range: begin <= N < end
+ The integer is selected uniformly at random.
+ !*/
+
+ long long get_integer(
+ long long end
+ );
+ /*!
+ requires
+ - 0 <= end
+ ensures
+ - returns get_integer_in_range(0,end)
+ !*/
+
+ double get_random_gaussian (
+ );
+ /*!
+ ensures
+ - returns a random number sampled from a Gaussian distribution
+ with mean 0 and standard deviation 1.
+ !*/
+
+ void swap (
+ rand& item
+ );
+ /*!
+ ensures
+ - swaps *this and item
+ !*/
+
+ };
+
+ inline void swap (
+ rand& a,
+ rand& b
+ ) { a.swap(b); }
+ /*!
+ provides a global swap function
+ !*/
+
+ void serialize (
+ const rand& item,
+ std::ostream& out
+ );
+ /*!
+ provides serialization support
+ !*/
+
+ void deserialize (
+ rand& item,
+ std::istream& in
+ );
+ /*!
+ provides deserialization support
+ !*/
+}
+
+#endif // DLIB_RAND_KERNEl_ABSTRACT_
+