ocarina/include/core/random.h
Anna Schumaker 068afd6276 core/random: Convert to C
And convert the unit test while we're at it.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 10:05:58 -04:00

37 lines
771 B
C

/*
* Copyright 2014 (c) Anna Schumaker
*/
#ifndef OCARINA_CORE_RANDOM_H
#define OCARINA_CORE_RANDOM_H
#ifdef CONFIG_TESTING
void _seed_random(unsigned int);
unsigned int _pick_random();
#else /* CONFIG_TESTING */
#include <stdlib.h>
static inline void _seed_random(unsigned int n) { srand(time(NULL) + n); }
static inline unsigned int _pick_random() { return rand(); }
#endif /* CONFIG_TESTING */
/* Seed the random number generator. */
static inline void random_seed(unsigned int n)
{
_seed_random(n);
}
/* Returns a random number X, where min <= value <= max. */
static inline unsigned int random_range(unsigned int min, unsigned int max)
{
if (min >= max)
return min;
return min + (_pick_random() % (max - min));
}
#endif /* OCARINA_CORE_RANDOM_H */