2
0

IceRandom.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2. /**
  3. * Contains code for random generators.
  4. * \file IceRandom.h
  5. * \author Pierre Terdiman
  6. * \date August, 9, 2001
  7. */
  8. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  9. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  10. // Include Guard
  11. #ifndef __ICERANDOM_H__
  12. #define __ICERANDOM_H__
  13. FUNCTION ICECORE_API void SRand(udword seed);
  14. FUNCTION ICECORE_API udword Rand();
  15. //! Returns a unit random floating-point value
  16. inline_ float UnitRandomFloat() { return float(Rand()) * ONE_OVER_RAND_MAX; }
  17. //! Returns a random index so that 0<= index < max_index
  18. ICECORE_API udword GetRandomIndex(udword max_index);
  19. class ICECORE_API BasicRandom
  20. {
  21. public:
  22. //! Constructor
  23. inline_ BasicRandom(udword seed=0) : mRnd(seed) {}
  24. //! Destructor
  25. inline_ ~BasicRandom() {}
  26. inline_ void SetSeed(udword seed) { mRnd = seed; }
  27. inline_ udword GetCurrentValue() const { return mRnd; }
  28. inline_ udword Randomize() { mRnd = mRnd * 2147001325 + 715136305; return mRnd; }
  29. private:
  30. udword mRnd;
  31. };
  32. #endif // __ICERANDOM_H__