const prng = require('./prng-xor')const { processSeed } = require('./utils')
module.exports = (seeded, initseed) => { const { reseed: prngReseed, getState, setState, random: prngRandom } = prng(0)
prngReseed(processSeed(initseed))
const initialState = getState()
const state = newVal => { if (newVal === undefined) { return getState() } else { if (newVal === null) { setState(initialState) } else { setState(newVal) } return seeded } }
const reseed = function (seed) { prngReseed(processSeed(seed === null ? initseed : seed)) return seeded }
const random = () => seeded.weighting(prngRandom())
return { state, reseed, random }}