123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #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;
- };
- }
|