From a2e1a48d82dcba2583c0cd6e133d1a399fc2dcb1 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sat, 3 Jun 2023 03:38:40 -0600 Subject: [PATCH] tweak: add xorshift example --- C/scratchpad/makefile | 2 ++ C/scratchpad/xorshift | Bin 0 -> 16824 bytes C/scratchpad/xorshift.c | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 C/scratchpad/makefile create mode 100755 C/scratchpad/xorshift create mode 100644 C/scratchpad/xorshift.c diff --git a/C/scratchpad/makefile b/C/scratchpad/makefile new file mode 100644 index 00000000..819c0de8 --- /dev/null +++ b/C/scratchpad/makefile @@ -0,0 +1,2 @@ +build: + gcc xorshift.c -o xorshift diff --git a/C/scratchpad/xorshift b/C/scratchpad/xorshift new file mode 100755 index 0000000000000000000000000000000000000000..bb1d7a19161538531cf21bebecdf3598b94cfeff GIT binary patch literal 16824 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 o7(c%M%m +#include +#include + +struct xorshift32_state { + uint32_t a; +}; + +uint32_t xorshift32(struct xorshift32_state *state) +{ + /* Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" */ + uint32_t x = state->a; + x ^= x << 13; + x ^= x >> 17; + x ^= x << 5; + return state->a = x; +} + +int main(){ + struct xorshift32_state** state = malloc(sizeof(struct xorshift32_state*) * 4); + for(int i=0; i<4;i++){ + state[i] = malloc(sizeof(struct xorshift32_state)); + state[i]->a = (uint32_t) i + 1; + } + + printf("%i\n", xorshift32(state[0])); + printf("%i\n", xorshift32(state[0])); + for(int i=0; i<4;i++){ + free(state[i]); + } + free(state); + + + return 0; +}