Skip to content

Class: Random ​

Seedable pseudo-random number generator + helpers. Uses Mulberry32 — a tiny, fast 32-bit PRNG with good statistical properties for game RNG. NOT cryptographically secure; never use for tokens / signatures. The seed/state is a plain uint32, so it's trivially serializable for replays / save-load.

Determinism: identical seeds produce identical sequences across platforms and JS engines. That's the whole point — it lets you reproduce a "lucky drop" run in QA or freeze RNG in a unit test without bringing your own seeded PRNG library.

Two ways to use:

  • new Random(seed) for a private stream (encounters, drops, particle bursts per scene).
  • Random.shared global instance for fire-and-forget calls — auto-seeded from performance.now() at module load. Use Random.shared.SetSeed(...) to pin it.

Constructors ​

Constructor ​

ts
new Random(seed?): Random;

Parameters ​

ParameterType
seednumber

Returns ​

Random

Properties ​

PropertyModifierTypeDescription
sharedreadonlyRandomPublic global. Auto-seeded once at module load — replace seed via SetSeed for reproducible runs.

Methods ​

Angle() ​

ts
Angle(): number;

Unit-length 2D direction vector. Returns the angle in radians — callers convert as needed via Math.cos/sin or Vector2.FromAngle.

Returns ​

number


Bool() ​

ts
Bool(p?): boolean;

True with probability p in [0, 1]. Default 0.5 — coin flip.

Parameters ​

ParameterTypeDefault value
pnumber0.5

Returns ​

boolean


Gaussian() ​

ts
Gaussian(mean?, stdDev?): number;

Approximate normal distribution via Box-Muller. mean shifts, stdDev scales. Useful for natural-feeling particle spread (size jitter, lifetime variance, etc.).

Parameters ​

ParameterTypeDefault value
meannumber0
stdDevnumber1

Returns ​

number


GetState() ​

ts
GetState(): number;

Returns ​

number


InRect() ​

ts
InRect(
   minX, 
   minY, 
   maxX, 
   maxY, 
   out
): object;

Uniform point inside an axis-aligned rect. Writes into out.

Parameters ​

ParameterType
minXnumber
minYnumber
maxXnumber
maxYnumber
out{ x: number; y: number; }
out.xnumber
out.ynumber

Returns ​

object

NameType
xnumber
ynumber

Int() ​

ts
Int(min, max): number;

Uniform integer in [min, max] inclusive on both ends.

Parameters ​

ParameterType
minnumber
maxnumber

Returns ​

number


InUnitCircle() ​

ts
InUnitCircle(out): object;

Uniform point inside a unit circle. Writes into out to avoid allocation. The sqrt() is what keeps the distribution uniform — without it, points cluster near the center.

Parameters ​

ParameterType
out{ x: number; y: number; }
out.xnumber
out.ynumber

Returns ​

object

NameType
xnumber
ynumber

Next() ​

ts
Next(): number;

Uniform float in [0, 1). Mulberry32 — drop-in for Math.random() with a 2^32 period.

Returns ​

number


Pick() ​

ts
Pick<T>(array): T | undefined;

Pick a random element from a non-empty array. Returns undefined for empty arrays.

Type Parameters ​

Type Parameter
T

Parameters ​

ParameterType
arrayreadonly T[]

Returns ​

T | undefined


Range() ​

ts
Range(min, max): number;

Uniform float in [min, max).

Parameters ​

ParameterType
minnumber
maxnumber

Returns ​

number


SetSeed() ​

ts
SetSeed(seed): void;

Parameters ​

ParameterType
seednumber

Returns ​

void


SetState() ​

ts
SetState(state): void;

Parameters ​

ParameterType
statenumber

Returns ​

void


Shuffled() ​

ts
Shuffled<T>(array): T[];

Allocating shuffle — for callers that want to keep the original order.

Type Parameters ​

Type Parameter
T

Parameters ​

ParameterType
arrayreadonly T[]

Returns ​

T[]


ShuffleInPlace() ​

ts
ShuffleInPlace<T>(array): T[];

Fisher-Yates in place. Mutates and returns the input array.

Type Parameters ​

Type Parameter
T

Parameters ​

ParameterType
arrayT[]

Returns ​

T[]


Sign() ​

ts
Sign(): number;

+1 / -1 with equal probability. Convenient for flipping a direction.

Returns ​

number


WeightedIndex() ​

ts
WeightedIndex(weights): number;

Pick an index from an array of weights — Pick-equivalent for non-uniform distributions. Negative weights are clamped to 0. Returns -1 if total weight is 0.

Parameters ​

ParameterType
weightsreadonly number[]

Returns ​

number

© 2026 PlayAdGentic