UNPKG

gnablib

Version:

A lean, zero dependency library to provide a useful base for your project.

2 lines 839 B
/*! Copyright 2024-2025 the gnablib contributors MPL-1.1 */ import{asLE as t}from"../endian/platform.js";import{sLen as r}from"../safe/safe.js";import{APrng32 as e}from"./APrng32.js";export class SplitMix32 extends e{constructor(){super(...arguments),this.bitGen=32,this.safeBits=32}trueSave(){const r=new Uint8Array(this._state.slice().buffer);return t.i32(r,0,1),r}rawNext(){this._state[0]+=2654435769;let t=this._state[0];return t^=t>>>16,t=Math.imul(t,2246822507),t^=t>>>13,t=Math.imul(t,3266489909),t^=t>>>16,t>>>0}get[Symbol.toStringTag](){return"splitmix32"}static new(t=!1){return new SplitMix32(Uint32Array.of(0),t)}static seed(t,r=!1){return new SplitMix32(Uint32Array.of(t),r)}static restore(e,i=!1){r("state",e).exactly(4).throwNot();const s=e.slice();t.i32(s,0,1);const n=new Uint32Array(s.buffer);return new SplitMix32(n,i)}}