#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(); }; }