diff options
Diffstat (limited to 'ml/dlib/dlib/rand/rand_kernel_abstract.h')
-rw-r--r-- | ml/dlib/dlib/rand/rand_kernel_abstract.h | 218 |
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_ + |