More usage rand_s()

pull/5342/head
AlexeyAB 8 years ago
parent d3577a565d
commit 4d2fefd75a
  1. 23
      src/data.c
  2. 2
      src/image.c
  3. 34
      src/utils.c
  4. 3
      src/utils.h

@ -39,17 +39,6 @@ char **get_random_paths_indexes(char **paths, int n, int m, int *indexes)
}
*/
inline unsigned int random_gen()
{
unsigned int Num = 0;
#ifdef WIN32
rand_s(&Num);
#else
Num = rand();
#endif
return Num;
}
char **get_random_paths(char **paths, int n, int m)
{
char **random_paths = calloc(n, sizeof(char*));
@ -693,10 +682,10 @@ data load_data_detection(int n, char **paths, int m, int w, int h, int boxes, in
int dw = (ow*jitter);
int dh = (oh*jitter);
int pleft = rand_uniform(-dw, dw);
int pright = rand_uniform(-dw, dw);
int ptop = rand_uniform(-dh, dh);
int pbot = rand_uniform(-dh, dh);
int pleft = rand_uniform_strong(-dw, dw);
int pright = rand_uniform_strong(-dw, dw);
int ptop = rand_uniform_strong(-dh, dh);
int pbot = rand_uniform_strong(-dh, dh);
int swidth = ow - pleft - pright;
int sheight = oh - ptop - pbot;
@ -727,7 +716,7 @@ data load_data_detection(int n, char **paths, int m, int w, int h, int boxes, in
void *load_thread(void *ptr)
{
srand(time(0));
//srand(time(0));
//printf("Loading data: %d\n", random_gen());
load_args a = *(struct load_args*)ptr;
if(a.exposure == 0) a.exposure = 1;
@ -771,7 +760,7 @@ pthread_t load_data_in_thread(load_args args)
void *load_threads(void *ptr)
{
srand(time(0));
//srand(time(0));
int i;
load_args args = *(load_args *)ptr;
if (args.threads == 0) args.threads = 1;

@ -1153,7 +1153,7 @@ void distort_image(image im, float hue, float sat, float val)
void random_distort_image(image im, float hue, float saturation, float exposure)
{
float dhue = rand_uniform(-hue, hue);
float dhue = rand_uniform_strong(-hue, hue);
float dsat = rand_scale(saturation);
float dexp = rand_scale(exposure);
distort_image(im, dhue, dsat, dexp);

@ -607,12 +607,13 @@ float rand_uniform(float min, float max)
max = swap;
}
return ((float)rand()/RAND_MAX * (max - min)) + min;
//return (random_float() * (max - min)) + min;
}
float rand_scale(float s)
{
float scale = rand_uniform(1, s);
if(rand()%2) return scale;
float scale = rand_uniform_strong(1, s);
if(random_gen()%2) return scale;
return 1./scale;
}
@ -628,3 +629,32 @@ float **one_hot_encode(float *a, int n, int k)
return t;
}
unsigned int random_gen()
{
unsigned int rnd = 0;
#ifdef WIN32
rand_s(&rnd);
#else
rnd = rand();
#endif
return rnd;
}
float random_float()
{
#ifdef WIN32
return ((float)random_gen() / (float)UINT_MAX);
#else
return ((float)random_gen() / (float)RAND_MAX);
#endif
}
float rand_uniform_strong(float min, float max)
{
if (max < min) {
float swap = min;
min = max;
max = swap;
}
return (random_float() * (max - min)) + min;
}

@ -63,6 +63,9 @@ int find_arg(int argc, char* argv[], char *arg);
char *find_char_arg(int argc, char **argv, char *arg, char *def);
int sample_array(float *a, int n);
void print_statistics(float *a, int n);
unsigned int random_gen();
float random_float();
float rand_uniform_strong(float min, float max);
#endif

Loading…
Cancel
Save