diff --git a/lib/prng.ts b/lib/prng.ts
new file mode 100644
index 0000000..6af760c
--- /dev/null
+++ b/lib/prng.ts
@@ -0,0 +1,10 @@
+export type Prng = () => number;
+
+export function mulberry32(state: number) {
+  return function () {
+    let t = (state += 0x6d2b79f5);
+    t = Math.imul(t ^ (t >>> 15), t | 1);
+    t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
+    return (t ^ (t >>> 14)) >>> 0;
+  };
+}