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.

47 lines
1.1 KiB

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