00001 // Random.hpp - Interface of Randomize number 00002 // generations and verification algorithm. 00003 00004 #ifndef __J2K__RANDOM_HPP__ 00005 #define __J2K__RANDOM_HPP__ // To avoid multiple declaration of a class 00006 00007 #include <j2k/DataType/Sort/Const.hpp> 00008 00009 class Random { 00010 public: 00011 Random(); 00012 Random( const ULONG Size); 00013 Random( const ULONG Size, const ULONG Max ); 00014 Random( const ULONG Size, const ULONG Max, const UINT value ); 00015 Random( Random& s ); 00016 00017 virtual ~Random(); 00018 00019 void init() const; 00020 ULONG getMaximum() const; 00021 UINT getSeed() const; 00022 ULONG getSize() const; 00023 00024 void Clear(); 00025 void Resize( const ULONG Size ); 00026 void Backup(); 00027 void Restore(); 00028 void Display(); 00029 void Randomize(); 00030 void Randomize( const uint value ); 00031 void Verify( const ULONG spread ); 00032 00033 void feed(); 00034 void feedUp(); 00035 void feedDown(); 00036 void feedValue( Elem value ); 00037 00038 void feed( BOOL keepBackup ); 00039 void feedUp( BOOL keepBackup ); 00040 void feedDown( BOOL keepBackup ); 00041 void feedValue( BOOL keepBackup, Elem value ); 00042 00043 Elem getRnd(); 00044 Elem getRnd( const ULONG Max ); 00045 Elem* getArray(); 00046 00047 private: 00048 Elem* array; 00049 Elem* arrayBackup; 00050 ULONG maximum; 00051 uint seed; 00052 ULONG size; 00053 BOOL filled; 00054 }; 00055 00056 #endif