Random.hpp 676 B

123456789101112131415161718192021222324252627282930313233
  1. #ifndef CORE_RANDOM_HPP
  2. #define CORE_RANDOM_HPP
  3. #include "core/data/Array.hpp"
  4. #include "core/utils/Types.hpp"
  5. namespace Core {
  6. struct Random final {
  7. using Seed = u32;
  8. private:
  9. Array<Seed, 25> data;
  10. size_t index;
  11. public:
  12. Random(Seed seed);
  13. Seed next();
  14. Seed next(Seed min, Seed inclusiveMax);
  15. i32 nextI32();
  16. i32 nextI32(i32 min, i32 inclusiveMax);
  17. size_t nextSize();
  18. size_t nextSize(size_t min, size_t inclusiveMax);
  19. bool nextBool();
  20. float nextFloat();
  21. float nextFloat(float min, float exclusiveMax);
  22. private:
  23. void update();
  24. };
  25. }
  26. #endif