123456789101112131415161718192021222324252627282930313233343536373839404142 |
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /**
- * Contains code for random generators.
- * \file IceRandom.h
- * \author Pierre Terdiman
- * \date August, 9, 2001
- */
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Include Guard
- #ifndef __ICERANDOM_H__
- #define __ICERANDOM_H__
- FUNCTION ICECORE_API void SRand(udword seed);
- FUNCTION ICECORE_API udword Rand();
- //! Returns a unit random floating-point value
- inline_ float UnitRandomFloat() { return float(Rand()) * ONE_OVER_RAND_MAX; }
- //! Returns a random index so that 0<= index < max_index
- ICECORE_API udword GetRandomIndex(udword max_index);
- class ICECORE_API BasicRandom
- {
- public:
- //! Constructor
- inline_ BasicRandom(udword seed=0) : mRnd(seed) {}
- //! Destructor
- inline_ ~BasicRandom() {}
- inline_ void SetSeed(udword seed) { mRnd = seed; }
- inline_ udword GetCurrentValue() const { return mRnd; }
- inline_ udword Randomize() { mRnd = mRnd * 2147001325 + 715136305; return mRnd; }
- private:
- udword mRnd;
- };
- #endif // __ICERANDOM_H__
|