sdlRandR function
Generate a pseudo-random number less than n for positive n
The method used is faster and of better quality than rand() % n
. Odds are
roughly 99.9% even for n = 1 million. Evenness is better for smaller n, and
much worse as n gets bigger.
Example: to simulate a d6 use SDL_rand_r(state, 6) + 1
The +1 converts
0..5 to 1..6
If you want to generate a pseudo-random number in the full range of Sint32, you should use: (Sint32)SDL_rand_bits_r(state)
There are no guarantees as to the quality of the random sequence produced, and this should not be used for security (cryptography, passwords) or where money is on the line (loot-boxes, casinos). There are many random number libraries available with different characteristics and you should pick one of those to meet any serious needs.
\param state a pointer to the current random number state, this may not be
NULL.
\param n the number of possible outcomes. n must be positive.
\returns a random value in the range of 0 .. n-1
.
\threadsafety This function is thread-safe, as long as the state pointer isn't shared between threads.
\since This function is available since SDL 3.1.3.
\sa SDL_rand \sa SDL_rand_bits_r \sa SDL_randf_r
extern SDL_DECLSPEC Sint32 SDLCALL SDL_rand_r(Uint64 *state, Sint32 n)
Implementation
int sdlRandR(Pointer<Uint64> state, int n) {
final sdlRandRLookupFunction = libSdl3.lookupFunction<
Int32 Function(Pointer<Uint64> state, Int32 n),
int Function(Pointer<Uint64> state, int n)>('SDL_rand_r');
return sdlRandRLookupFunction(state, n);
}