Random.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include "Betriebssystem.h"
  3. namespace Framework
  4. {
  5. class Datei;
  6. class RandomGenerator
  7. {
  8. private:
  9. struct random_data
  10. {
  11. int *fptr; /* Front pointer. */
  12. int *rptr; /* Rear pointer. */
  13. int *state; /* Array of state values. */
  14. int rand_type; /* Type of random number generator. */
  15. int rand_deg; /* Degree of random number generator. */
  16. int rand_sep; /* Distance between front and rear. */
  17. int *end_ptr; /* Pointer behind state table. */
  18. };
  19. int randtbl[ 32 ];
  20. random_data unsafe_state;
  21. int seed;
  22. int offset;
  23. int ref;
  24. void srand( int seed );
  25. public:
  26. //! Konstruktor
  27. //! Erzeugt einen neuen Zufallsgenerator mit dem seed des Zeitpunktes des Erzeugens
  28. __declspec( dllexport ) RandomGenerator();
  29. //! Destruktor
  30. __declspec( dllexport ) ~RandomGenerator();
  31. //! Gibt eine Zufallszahl zwischen 0 und 1 zurück
  32. __declspec( dllexport ) double rand();
  33. //! Initialisiert den Gennerator mit einem Seed.
  34. //! Diese methode sollte möglichst nur mit seeds verwendet werden, die von getSeed zurückgegeben wurden, da der aufruf sonnst sehr lange dauern kann
  35. __declspec( dllexport ) void setSeed( __int64 seed );
  36. //! Gibt den aktuellen Seed zurück, mit dem alle weiteren Zufallszahlen vorherbestimmt werden können
  37. __declspec( dllexport ) __int64 getSeed() const;
  38. //! Erhöht den Reference Counting Zähler.
  39. //! \return this.
  40. __declspec( dllexport ) RandomGenerator *getThis();
  41. //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Objekt automatisch gelöscht.
  42. //! \return 0.
  43. __declspec( dllexport ) RandomGenerator *release();
  44. };
  45. }