i_rng_pool.hpp 920 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef __I_RNG_POOL__HPP
  2. #define __I_RNG_POOL__HPP
  3. #include <vector>
  4. using namespace std;
  5. enum RngType {
  6. kRngPoisson,
  7. kRngGaussian,
  8. kRngUniform
  9. };
  10. /**
  11. \brief Interface class for RandomNumberQueue
  12. A class implementing the IRngQueue interface provides fresh random numbers
  13. from its internal queue via getRandomNumber().
  14. */
  15. class IRngQueue
  16. {
  17. public:
  18. virtual double getRandomNumber()=0;
  19. };
  20. /**
  21. \brief Interface class which provides a pool of random number queues.
  22. A class implementint the IRngQueue interface can be queried for a pointer to
  23. a IRngQueue object.
  24. */
  25. class IRngQueuePool
  26. {
  27. public:
  28. virtual IRngQueue* getRngQueue()=0;
  29. virtual IRngQueue* getRngQueue(RngType _RType, double _Parameter, int NVectors=10, int NumbersPerVector=2000)=0;
  30. virtual vector<double>* getRandomNumberVector(IRngQueue*)=0;
  31. virtual void releaseRngQueue(IRngQueue*)=0;
  32. };
  33. #endif // __I_RNG_POOL__HPP