deadbeef_rand.h 842 B

12345678910111213141516171819202122232425262728
  1. #ifndef DEADBEEF_RAND_H
  2. #define DEADBEEF_RAND_H
  3. #include <stdint.h>
  4. #define DEADBEEF_MAX UINT32_MAX
  5. /* Dead Beef Random Number Generator From: http://inglorion.net/software/deadbeef_rand */
  6. /* Generates a random number between 0 and DEADBEEF_MAX. */
  7. uint32_t deadbeef_rand(void);
  8. /* Seeds with the given integer. */
  9. void deadbeef_srand(uint32_t x);
  10. /* Generates seed from the current time. */
  11. uint32_t deadbeef_generate_seed(void);
  12. /* Seeds with the above function. */
  13. #define deadbeef_srand_time() deadbeef_srand(deadbeef_generate_seed())
  14. /* Returns random double in the range [a, b).*/
  15. #define DEADBEEF_UNIFORM(a, b) \
  16. ((a) + (deadbeef_rand() / (((double)DEADBEEF_MAX / (b - a) + 1))))
  17. /* Returns random integer in the range [a, b).*/
  18. #define DEADBEEF_RANDRANGE(a, b) (uint32_t)DEADBEEF_UNIFORM(a, b)
  19. #endif /* DEADBEEF_RAND_H */