diff options
Diffstat (limited to '')
-rw-r--r-- | stack.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/stack.h b/stack.h index a635e8c..4daf6ba 100644 --- a/stack.h +++ b/stack.h @@ -90,10 +90,16 @@ static inline void stackDeck(struct Stack *stack) { } } -// FIXME: Use a portable random. +static inline int randUniform(int bound) { + for (;;) { + int r = rand(); + if (r >= RAND_MAX % bound) return r % bound; + } +} + static inline void stackShuffle(struct Stack *stack) { for (Uint8 i = stack->len - 1; i > 0; --i) { - Uint8 j = arc4random_uniform(i + 1); + Uint8 j = randUniform(i + 1); Sint8 x = stack->cards[i]; stack->cards[i] = stack->cards[j]; stack->cards[j] = x; |