12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #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:
- //! Konstruktor
- //! Erzeugt einen neuen Zufallsgenerator mit dem seed des Zeitpunktes
- //! des Erzeugens
- DLLEXPORT RandomGenerator();
- //! Destruktor
- DLLEXPORT ~RandomGenerator();
- //! Gibt eine Zufallszahl zwischen 0 und 1 zurück
- DLLEXPORT double rand();
- //! Initialisiert den Gennerator mit einem Seed.
- //! Diese methode sollte möglichst nur mit seeds verwendet werden, die
- //! von getSeed zurückgegeben wurden, da der aufruf sonnst sehr lange
- //! dauern kann
- DLLEXPORT void setSeed(__int64 seed);
- //! Gibt den aktuellen Seed zurück, mit dem alle weiteren Zufallszahlen
- //! vorherbestimmt werden können
- DLLEXPORT __int64 getSeed() const;
- };
- } // namespace Framework
|