summaryrefslogtreecommitdiffhomepage
path: root/src/external
diff options
context:
space:
mode:
authorRay <[email protected]>2023-11-03 20:21:43 +0100
committerRay <[email protected]>2023-11-03 20:21:43 +0100
commit2d1b2119202d08245ca4d313b846a6d0a8b2139b (patch)
tree644c1c2c055704fdbfb81735ea5976661408d8d3 /src/external
parent5da0074fed50f3a63d3c47aa0f2e1fbdc9051059 (diff)
downloadraylib-2d1b2119202d08245ca4d313b846a6d0a8b2139b.tar.gz
raylib-2d1b2119202d08245ca4d313b846a6d0a8b2139b.zip
ADDED: `LoadRandomSequence()`/`UnloadRandomSequence()`
Diffstat (limited to 'src/external')
-rw-r--r--src/external/rprand.h28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/external/rprand.h b/src/external/rprand.h
index b8dc4a27..acdeac67 100644
--- a/src/external/rprand.h
+++ b/src/external/rprand.h
@@ -117,10 +117,10 @@ extern "C" { // Prevents name mangling of functions
// Module Functions Declaration
//----------------------------------------------------------------------------------
RPRANDAPI void rprand_set_seed(unsigned long long seed); // Set rprand_state for Xoshiro128**, seed is 64bit
-RPRANDAPI unsigned int rprand_get_value(int min, int max); // Get random value within a range, min and max included
+RPRANDAPI int rprand_get_value(int min, int max); // Get random value within a range, min and max included
-RPRANDAPI unsigned int *rprand_load_sequence(unsigned int count, int min, int max); // Load pseudo-random numbers sequence with no duplicates
-RPRANDAPI void rprand_unload_sequence(unsigned int *sequence); // Unload pseudo-random numbers sequence
+RPRANDAPI int *rprand_load_sequence(unsigned int count, int min, int max); // Load pseudo-random numbers sequence with no duplicates
+RPRANDAPI void rprand_unload_sequence(int *sequence); // Unload pseudo-random numbers sequence
#ifdef __cplusplus
}
@@ -136,7 +136,7 @@ RPRANDAPI void rprand_unload_sequence(unsigned int *sequence); // Unload pseudo
#if defined(RPRAND_IMPLEMENTATION)
-#include <stdlib.h> // Required for: calloc(), free()
+#include <stdlib.h> // Required for: calloc(), free(), abs()
#include <stdint.h> // Required for data types: uint32_t, uint64_t
//----------------------------------------------------------------------------------
@@ -174,33 +174,33 @@ void rprand_set_seed(unsigned long long seed)
}
// Get random value within a range, min and max included
-unsigned int rprand_get_value(int min, int max)
+int rprand_get_value(int min, int max)
{
- unsigned int value = rprand_xoshiro()%(max - min) + min;
+ int value = rprand_xoshiro()%(abs(max - min) + 1) + min;
return value;
}
-// Load pseudo-random numbers sequence with no duplicates
-unsigned int *rprand_load_sequence(unsigned int count, int min, int max)
+// Load pseudo-random numbers sequence with no duplicates, min and max included
+int *rprand_load_sequence(unsigned int count, int min, int max)
{
- unsigned int *sequence = NULL;
+ int *sequence = NULL;
- if (count > (max - min))
+ if (count > (abs(max - min) + 1))
{
RPRAND_LOG("WARNING: Sequence count required is greater than range provided\n");
//count = (max - min);
return sequence;
}
- sequence = (unsigned int *)RPRAND_CALLOC(count, sizeof(unsigned int));
+ sequence = (int *)RPRAND_CALLOC(count, sizeof(int));
- uint32_t value = 0;
+ int value = 0;
bool value_is_dup = false;
for (int i = 0; i < count;)
{
- value = rprand_xoshiro()%(max - min) + min;
+ value = (rprand_xoshiro()%(abs(max - min) + 1)) + min;
value_is_dup = false;
for (int j = 0; j < i; j++)
@@ -223,7 +223,7 @@ unsigned int *rprand_load_sequence(unsigned int count, int min, int max)
}
// Unload pseudo-random numbers sequence
-void rprand_unload_sequence(unsigned int *sequence)
+void rprand_unload_sequence(int *sequence)
{
RPRAND_FREE(sequence);
sequence = NULL;