core/factories/seed.factory.ts
core/factories/seed.factory.ts is a file in GovLab Patterns. 15 lines of code and 5 definitions.
import type { Rng } from "#types/seed.types";
const MODULUS = 2_147_483_647;
const MULTIPLIER = 16_807;
export const createRng = function createRng(seed: number): Rng {
let state = Math.abs(Math.floor(seed)) % MODULUS;
if (state === 0) {
state = 1;
}
return {
next(): number {
state = (state * MULTIPLIER) % MODULUS;
return state / MODULUS;
},
};
};