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
- __declspec( dllexport ) RandomGenerator();
- // Destruktor
- __declspec( dllexport ) ~RandomGenerator();
- // Gibt eine Zufallszahl zwischen 0 und 1 zurück
- __declspec( 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
- __declspec( dllexport ) void setSeed( __int64 seed );
- // Gibt den aktuellen Seed zurück, mit dem alle weiteren Zufallszahlen vorherbestimmt werden können
- __declspec( dllexport ) __int64 getSeed() const;
- // Erhöht den Reference Counting Zähler.
- // return: this.
- __declspec( dllexport ) RandomGenerator *getThis();
- // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
- // return: 0.
- __declspec( dllexport ) RandomGenerator *release();
- };
- }
|