| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #pragma once
- #include "Betriebssystem.h"
- #include "ReferenceCounter.h"
- namespace Framework
- {
- class Datei;
- class RandomGenerator : public virtual ReferenceCounter
- {
- private:
- struct random_data
- {
- int* fptr; /* Front pointer. */
- int* rptr; /* Rear pointer. */
- int* state; /* Array of state values. */
- int rand_type; /* Type of random number generator. */
- int rand_deg; /* Degree of random number generator. */
- int rand_sep; /* Distance between front and rear. */
- int* end_ptr; /* Pointer behind state table. */
- };
- int randtbl[32];
- random_data unsafe_state;
- int seed;
- int offset;
- void srand(int seed);
- public:
- //! Constructor
- //! Creates a new random generator with the seed of the creation
- //! time point
- DLLEXPORT RandomGenerator();
- //! Destructor
- DLLEXPORT ~RandomGenerator();
- //! Returns a random number between 0 and 1
- DLLEXPORT double rand();
- //! Initializes the generator with a seed.
- //! This method should preferably only be used with seeds returned
- //! by getSeed, as the call can otherwise take very long
- DLLEXPORT void setSeed(__int64 seed);
- //! Returns the current seed with which all further random numbers
- //! can be predetermined
- DLLEXPORT __int64 getSeed() const;
- };
- } // namespace Framework
|