UNPKG

gnablib

Version:

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

2 lines 1.01 kB
/*! Copyright 2025 the gnablib contributors MPL-1.1 */ import{BitWriter as t}from"../primitive/BitWriter.js";export class APrng32{constructor(t,e){this._state=t,this.saveable=e}save(){return this.saveable?this.trueSave():new Uint8Array(0)}_nextU(t){let e=t,r=0;for(;e>this.bitGen;)e-=this.bitGen,r|=this.rawNext()<<e;return e==this.bitGen?r|this.rawNext():r|this.rawNext()>>>this.bitGen-e}nextBool(){return this.rawNext()>>>this.bitGen-1==1}nextByte(){return this._nextU(8)}nextU16(){return this._nextU(16)}nextI16(){let t=this._nextU(16)>>>0;return t>32767&&(t=~(65535-t)),t}nextU31(){return this._nextU(31)}nextU32(){return this._nextU(32)>>>0}*seqU32(t=1){let e=0;for(;e++<t;)yield this._nextU(32)>>>0}nextI32(){return this._nextU(32)}nextF32(){return 5.960464477539063e-8*this._nextU(24)}nextF64(){return 11102230246251565e-32*(67108864*this._nextU(27)+this._nextU(26))}fillBytes(e){const r=t.mount(e),i=this.bitGen-this.safeBits;for(;!r.full;)r.pushNumberBE(this.rawNext()>>>i,this.safeBits);return e}}