5 #ifndef FML__INTERNALS_RAND_H
6 #define FML__INTERNALS_RAND_H
17 #include <sys/types.h>
29 inline uint32_t mix_96(uint32_t a, uint32_t b, uint32_t c)
31 a=a-b; a=a-c; a=a^(c >> 13);
32 b=b-c; b=b-a; b=b^(a << 8);
33 c=c-a; c=c-b; c=c^(b >> 13);
34 a=a-b; a=a-c; a=a^(c >> 12);
35 b=b-c; b=b-a; b=b^(a << 16);
36 c=c-a; c=c-b; c=c^(b >> 5);
37 a=a-b; a=a-c; a=a^(c >> 3);
38 b=b-c; b=b-a; b=b^(a << 10);
39 c=c-a; c=c-b; c=c^(b >> 15);
47 inline uint32_t get_seed()
55 pid = (uint32_t) getpid();
57 #error "Unable to get PID"
60 ret = mix_96((uint32_t) time(NULL), (uint32_t) clock(), pid);