random.h 666 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef __RANDOM_H__
  2. #define __RANDOM_H__
  3. /*
  4. * Random - A simple random number generator class. Created to avoid
  5. * race conditions on rand().
  6. */
  7. class Random
  8. {
  9. public:
  10. typedef UInt32 value_t;
  11. private:
  12. value_t _seed;
  13. public:
  14. Random() : _seed(1) { }
  15. ~Random() { }
  16. inline void seed(value_t s)
  17. {
  18. _seed = s;
  19. }
  20. inline value_t next(value_t limit = 32768)
  21. {
  22. // see rand(3) man page
  23. const value_t FACTOR = 1103515245;
  24. const value_t ADDEND = 12345;
  25. _seed = _seed * FACTOR + ADDEND;
  26. return (_seed/65536) % limit;
  27. }
  28. };
  29. #endif // __RANDOM_H__