00001 #include "SIGEL_Tools/SIG_Randomizer.h" 00002 00003 #include <qdatetime.h> 00004 00005 SIGEL_Tools::SIG_Randomizer::SIG_Randomizer() 00006 : next( 0 ) 00007 { 00008 setNewSeed( 0 ); 00009 }; 00010 00011 SIGEL_Tools::SIG_Randomizer::SIG_Randomizer(int seed) 00012 : next( 0 ) 00013 { 00014 setNewSeed( seed ); 00015 }; 00016 00017 void SIGEL_Tools::SIG_Randomizer::setNewSeed(int seed) 00018 { 00019 if (seed == 0) 00020 { 00021 QTime midNight( 0, 0 ); 00022 next = midNight.secsTo( QTime::currentTime() ); 00023 } 00024 else 00025 next = seed; 00026 } 00027 00028 SIGEL_Tools::SIG_Randomizer::~SIG_Randomizer() 00029 { }; 00030 00031 int SIGEL_Tools::SIG_Randomizer::getRandomInt(int maximum) 00032 { 00033 next = next*1103515245 + 12345; 00034 int randomNumber = static_cast<unsigned int>( next / 65536 ) % 32768; 00035 00036 if (maximum == 0) 00037 return 0; 00038 else 00039 return randomNumber % maximum; 00040 } 00041 00042 long SIGEL_Tools::SIG_Randomizer::getRandomLong(long maximum) 00043 { 00044 return getRandomInt( static_cast<int>(maximum) ); 00045 } 00046 00047 00048 00049