summaryrefslogtreecommitdiff
path: root/random.c
diff options
context:
space:
mode:
Diffstat (limited to 'random.c')
-rw-r--r--random.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/random.c b/random.c
new file mode 100644
index 0000000..c53d378
--- /dev/null
+++ b/random.c
@@ -0,0 +1,26 @@
+#include <SDL.h>
+
+static Uint64 random = 0xbee;
+
+void seed_rand(Uint64 seed) {
+ random ^= seed;
+}
+
+Uint64 get_rand() {
+ random ^= random >> 7;
+ random ^= random << 9;
+ random ^= random >> 13;
+ return random;
+}
+
+int rand_int() {
+ Uint64 rand = get_rand();
+ int result;
+ memcpy(&result, &rand, sizeof(int));
+ result = SDL_abs(result);
+ return result;
+}
+
+double rand_float() {
+ return (get_rand() >> 11) * 0x1.0p-53;
+}