Adding repo after 2 days of vibecoding
This commit is contained in:
30
public/src/rng.js
Normal file
30
public/src/rng.js
Normal file
@@ -0,0 +1,30 @@
|
||||
export function fnv1a32(str) {
|
||||
let h = 0x811c9dc5;
|
||||
for (let i = 0; i < str.length; i++) {
|
||||
h ^= str.charCodeAt(i);
|
||||
h = Math.imul(h, 0x01000193);
|
||||
}
|
||||
return h >>> 0;
|
||||
}
|
||||
|
||||
export function hash2u32(a, b, seed = 0) {
|
||||
// 2D integer hash -> uint32 (cheap, stable)
|
||||
let x = (a | 0) + 0x9e3779b9 + (seed | 0);
|
||||
let y = (b | 0) + 0x85ebca6b;
|
||||
x ^= y + 0x27d4eb2d + (x << 6) + (x >>> 2);
|
||||
x = Math.imul(x ^ (x >>> 16), 0x7feb352d);
|
||||
x = Math.imul(x ^ (x >>> 15), 0x846ca68b);
|
||||
x ^= x >>> 16;
|
||||
return x >>> 0;
|
||||
}
|
||||
|
||||
export function mulberry32(seedU32) {
|
||||
let t = seedU32 >>> 0;
|
||||
return function rand() {
|
||||
t += 0x6d2b79f5;
|
||||
let r = Math.imul(t ^ (t >>> 15), 1 | t);
|
||||
r ^= r + Math.imul(r ^ (r >>> 7), 61 | r);
|
||||
return ((r ^ (r >>> 14)) >>> 0) / 4294967296;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user