Standardize the way we generate random numbers.
This commit is contained in:
+26
-4
@@ -70,8 +70,30 @@ char *getenv(const char *name);
|
||||
|
||||
/// @brief Allows to set the seed of the random value generator.
|
||||
/// @param x The new seed.
|
||||
void srand(int x);
|
||||
void srand(unsigned x);
|
||||
|
||||
/// @brief Generates a random value.
|
||||
/// @return The random value.
|
||||
int rand();
|
||||
/// @brief Generates a random unsigned integer between 0 and RAND_MAX.
|
||||
/// @return the random value.
|
||||
unsigned rand();
|
||||
|
||||
/// @brief Generates a random floating point number between 0 and 1.
|
||||
/// @return the random value.
|
||||
float randf();
|
||||
|
||||
/// @brief Generates a random integer between lb and ub.
|
||||
/// @param lb the lower-bound value.
|
||||
/// @param ub the upper-bound value.
|
||||
/// @return the random value.
|
||||
int randint(int lb, int ub);
|
||||
|
||||
/// @brief Generates a random unsigned between lb and ub.
|
||||
/// @param lb the lower-bound value.
|
||||
/// @param ub the upper-bound value.
|
||||
/// @return the random value.
|
||||
unsigned randuint(unsigned lb, unsigned ub);
|
||||
|
||||
/// @brief Generates a random float between lb and ub.
|
||||
/// @param lb the lower-bound value.
|
||||
/// @param ub the upper-bound value.
|
||||
/// @return the random value.
|
||||
float randfloat(float lb, float ub);
|
||||
|
||||
+23
-3
@@ -83,14 +83,34 @@ void free(void *ptr)
|
||||
}
|
||||
|
||||
/// Seed used to generate random numbers.
|
||||
static int rseed = 0;
|
||||
static unsigned rseed = 0;
|
||||
|
||||
void srand(int x)
|
||||
void srand(unsigned x)
|
||||
{
|
||||
rseed = x;
|
||||
}
|
||||
|
||||
int rand()
|
||||
unsigned rand()
|
||||
{
|
||||
return rseed = (rseed * 1103515245U + 12345U) & RAND_MAX;
|
||||
}
|
||||
|
||||
float randf()
|
||||
{
|
||||
return ((float)rand() / (float)(RAND_MAX));
|
||||
}
|
||||
|
||||
int randint(int lb, int ub)
|
||||
{
|
||||
return lb + ((int)rand() % (ub - lb + 1));
|
||||
}
|
||||
|
||||
unsigned randuint(unsigned lb, unsigned ub)
|
||||
{
|
||||
return lb + (rand() % (ub - lb + 1));
|
||||
}
|
||||
|
||||
float randfloat(float lb, float ub)
|
||||
{
|
||||
return lb + (randf() * (ub - lb));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user