random.h 706 B

1234567891011121314151617181920212223242526272829
  1. //
  2. // random.h
  3. // dice-roll
  4. //
  5. // Created by Sam Jaffe on 12/1/18.
  6. // Copyright © 2018 Sam Jaffe. All rights reserved.
  7. //
  8. #pragma once
  9. #include <shared_random_generator/random.h>
  10. namespace dice { namespace engine {
  11. class random : private ::engine::random_number_generator {
  12. using super = ::engine::random_number_generator;
  13. public:
  14. using super::random_number_generator;
  15. /**
  16. * @brief Roll 1dN
  17. * @param sides The number of sides (N) on a die. e.g. d20
  18. * Domain: sides > 0
  19. * @return A number in the range [1, N]
  20. * @throws Produces UB if sides = 0
  21. */
  22. unsigned int roll(unsigned int sides) const {
  23. return super::exclusive(sides) + 1;
  24. }
  25. };
  26. }}