diff --git a/pokerth.pro b/pokerth.pro index e3c7acba..d5cdd1af 100755 --- a/pokerth.pro +++ b/pokerth.pro @@ -125,7 +125,7 @@ win32 { } !win32 { DEPENDPATH += src/net/linux/ - LIBS += -lboost_thread + LIBS += -lboost_thread -l ssl } CONFIG += qt release diff --git a/src/engine/local_engine/tools.cpp b/src/engine/local_engine/tools.cpp index d74c9202..5aa3aebe 100755 --- a/src/engine/local_engine/tools.cpp +++ b/src/engine/local_engine/tools.cpp @@ -33,37 +33,58 @@ Tools::~Tools() void Tools::getRandNumber(int start, int end, int howMany, int* randArray, bool different) { - double r = end-start+1; + int r = end-start+1; + unsigned char rand_buf[4]; + unsigned int randNumber; + + int i,j; if (!different) { - - int i; + for (i=0; i::max()) / r ) ) * r) { + randArray[i] = start + (randNumber % r); + } + } } else { - int *tempArray = new int[end-start+1]; - int i; for (i=0; i<(end-start+1); i++) tempArray[i]=1; - int temp; int counter(0); while (counter < howMany) { - temp = (int)(r*rand()/(RAND_MAX+1.0)); - if (tempArray[temp] == 1) { + if(!RAND_bytes(rand_buf,4)) { + RAND_pseudo_bytes(rand_buf,4); + } - randArray[counter] = temp+start; - tempArray[temp] = 0; - counter++; + randNumber = 0; + for(j=0; j<4; j++) { + randNumber += (rand_buf[j] << 8*j); + } + + if(randNumber < ( (unsigned int) ( ((double)numeric_limits::max()) / r ) ) * r) { + randNumber = randNumber % r; + + if (tempArray[randNumber] == 1) { + + randArray[counter] = start + randNumber; + tempArray[randNumber] = 0; + counter++; + } } - else { continue; } - } diff --git a/src/engine/local_engine/tools.h b/src/engine/local_engine/tools.h index 28c1eef1..dac8adf5 100755 --- a/src/engine/local_engine/tools.h +++ b/src/engine/local_engine/tools.h @@ -21,6 +21,8 @@ #define TOOLS_H #include +#include +#include class Tools{