00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "ExCRandomNumber.h"
00025
00026 int ExCRandomNumber::is_init = false;
00027
00028 ExCRandomNumber::ExCRandomNumber () {
00029 if (! is_init) {
00030 srand (time (NULL));
00031 is_init = true;
00032 }
00033 }
00034
00035 uint ExCRandomNumber::getInt (uint min, uint max) {
00036 uint value;
00037 uint v_tmp;
00038 if (max < min) {
00039 v_tmp = min;
00040 min = max;
00041 max = v_tmp;
00042 }
00043
00044 do {
00045 value = (rand() % (max - min + 1)) + min;
00046 } while (value < min || value > max);
00047
00048 return value;
00049 }
00050
00051 float ExCRandomNumber::getFloat (float min, float max) {
00052 float value;
00053 float v_tmp;
00054 if (max < min) {
00055 v_tmp = min;
00056 min = max;
00057 max = v_tmp;
00058 }
00059
00060 do {
00061 value = min + (float) getInt(0, (unsigned) ((max - min) * 1000)) / 1000;
00062 } while (value < min || value > max);
00063
00064 return value;
00065 }