You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.1 KiB

25 years ago
  1. // Public random number operations.
  2. #ifndef _CL_RANDOM_H
  3. #define _CL_RANDOM_H
  4. #include "cl_types.h"
  5. #include "cl_modules.h"
  6. class cl_random_state {
  7. public:
  8. struct { uint32 hi; uint32 lo; } seed;
  9. // Constructor:
  10. cl_random_state ();
  11. };
  12. // random32(randomstate) liefert eine neue Zufallszahl.
  13. // > randomstate: ein Random-State, wird ver�ndert
  14. // < ergebnis: eine 32-Bit-Zufallszahl
  15. extern uint32 random32 (cl_random_state& randomstate);
  16. #if defined(HAVE_FAST_LONGLONG)
  17. // random64(randomstate) liefert eine neue Zufallszahl.
  18. // > randomstate: ein Random-State, wird ver�ndert
  19. // < ergebnis: eine 64-Bit-Zufallszahl
  20. inline uint64 random64 (cl_random_state& randomstate)
  21. {
  22. return ((uint64)random32(randomstate) << 32)
  23. | (uint64)random32(randomstate);
  24. }
  25. #endif
  26. // Ein globaler Zufallszahlengenerator.
  27. extern cl_random_state cl_default_random_state;
  28. CL_REQUIRE(cl_random_def)
  29. // Das ist der Default-Generator.
  30. inline uint32 random32 (void)
  31. { return random32(cl_default_random_state); }
  32. #if defined(HAVE_FAST_LONGLONG)
  33. inline uint64 random64 (void)
  34. { return random64(cl_default_random_state); }
  35. #endif
  36. #endif /* _CL_RANDOM_H */