Skip to content

PrngEngine

Defined in: src/engine/prng-engine.ts:42

The base class the seedable engines share.

It provides seeding, state save and restore, and the byte and float paths built on nextUint32. Subclass it to add an algorithm of your own; a subclass implements the state layout and one step of the generator.

xoshiro128pp(42) instanceof PrngEngine; // true
pcg32(42) instanceof PrngEngine; // true
// Not seedable, so not one of these.
cryptoRandom instanceof PrngEngine; // false

new PrngEngine(state): PrngEngine

Defined in: src/engine/prng-engine.ts:49

Uint32Array

PrngEngine

abstract readonly algorithm: string

Defined in: src/engine/prng-engine.ts:43

Identifies the algorithm in EngineState.

Engine.algorithm


readonly seedable: true = true

Defined in: src/engine/prng-engine.ts:45

Whether the engine can be re-seeded. Math.random and the CSPRNG cannot.

Engine.seedable


readonly version: number = 1

Defined in: src/engine/prng-engine.ts:44

clone(): this

Defined in: src/engine/prng-engine.ts:111

this

Engine.clone


fillBytes(out): void

Defined in: src/engine/prng-engine.ts:65

Uint8Array

void

Engine.fillBytes


fillUint32(out): void

Defined in: src/engine/prng-engine.ts:61

Uint32Array

void

Engine.fillUint32


getState(): EngineState

Defined in: src/engine/prng-engine.ts:86

EngineState

Engine.getState


nextFloat64(): number

Defined in: src/engine/prng-engine.ts:55

A uniform double in [0, 1) with 53 bits of precision.

number

Engine.nextFloat64


abstract nextUint32(): number

Defined in: src/engine/prng-engine.ts:53

A uniform integer in [0, 2^32).

number

Engine.nextUint32


reseed(seed): void

Defined in: src/engine/prng-engine.ts:120

Restart from new seed material, in place.

Seed

void

Engine.reseed


setState(state): void

Defined in: src/engine/prng-engine.ts:94

EngineState

void

Engine.setState


split(n): Engine[]

Defined in: src/engine/prng-engine.ts:129

Independent children. Engines with a jump polynomial override this for guaranteed non-overlapping streams.

number

Engine[]

Engine.split