123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #pragma once
- #include "Betriebssystem.h"
- namespace Framework
- {
- class Datei;
- class RandomGenerator
- {
- 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;
- int ref;
- 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;
- //! Erhöht den Reference Counting Zähler.
- //! \return this.
- DLLEXPORT RandomGenerator *getThis();
- //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
- //! \return 0.
- DLLEXPORT RandomGenerator *release();
- };
- }
|