Skip to content

Random

Defined in: src/random.ts:86

An independent stream of randomness: new Random(42).integer(1, 6).

Method names match the ransu namespace exactly, for the numbers, collections and strings it covers. Libraries should own a Random rather than call the global, which an application may re-seed.

The modules that take an { engine } option — uuid, the distributions, dice, geometry, color — reach the same stream through rng.engine.

const rng = new Random(42);
rng.integer(1, 6); // 3
rng.pick(["a", "b", "c"]); // "c"
rng.shuffle([1, 2, 3]); // [ 3, 1, 2 ]
// The same seed always replays the same stream.
new Random(42).integer(1, 6); // 3 again
// Any engine, by factory or by instance.
new Random(42, { engine: engines.pcg32 });
new Random(engines.chacha20(42));

new Random(seedOrEngine?, options?): Random

Defined in: src/random.ts:90

Seed | EngineLike

RandomOptions = {}

Random

get engine(): Engine

Defined in: src/random.ts:119

The underlying engine. Hand this to { engine } options elsewhere.

const rng = new Random(42);
uuid.v4({ engine: rng.engine }); // a UUID from this stream

Engine

below(n): number

Defined in: src/random.ts:251

An integer in [0, n). The form array indices want.

number

number


bigBits(n): bigint

Defined in: src/random.ts:289

An integer built from n random bits, with no width limit.

number

bigint


bigint(min, max): bigint

Defined in: src/random.ts:261

A bigint in [min, max] — both ends included.

bigint

bigint

bigint


bits(n): number

Defined in: src/random.ts:284

An integer built from n random bits (up to 53).

number

number


bool(): boolean

Defined in: src/random.ts:266

true or false, evenly.

boolean


bytes(n): Uint8Array

Defined in: src/random.ts:293

number

Uint8Array


chance(p): boolean

Defined in: src/random.ts:270

number

boolean


char(options?): string

Defined in: src/random.ts:450

A uniformly chosen character, as a string of one code point.

UnicodeOptions | CodePointSet

string


chars(length, options?): string

Defined in: src/random.ts:455

A random string of length code points, not UTF-16 units.

number

UnicodeOptions | CodePointSet

string


choices<T>(items, k): T[]

Defined in: src/random.ts:363

k elements with replacement.

T

Collection<T>

number

T[]


clone(): Random

Defined in: src/random.ts:157

An independent copy positioned exactly where this one is.

Random

const rng = new Random(42);
const copy = rng.clone();
rng.random() === copy.random(); // true, then they diverge

codePoint(options?): number

Defined in: src/random.ts:445

A uniformly chosen Unicode code point.

UnicodeOptions | CodePointSet

number


combination<T>(items, k): T[]

Defined in: src/random.ts:373

k distinct elements, kept in their original order.

T

Collection<T>

number

T[]


fillBytes(out): void

Defined in: src/random.ts:298

Fill an existing buffer, with no allocation.

Uint8Array

void


float(min?, max?): number

Defined in: src/random.ts:241

A double in [min, max), or [0, 1) with no arguments.

number

number

number


floats(n): Float64Array

Defined in: src/random.ts:303

n doubles in [0, 1).

number

Float64Array


getState(): EngineState

Defined in: src/random.ts:201

A JSON-serialisable snapshot. Restore it with Random.setState.

EngineState

const rng = new Random(42);
const saved = rng.getState();
const first = rng.random();
rng.setState(saved);
rng.random() === first; // true

hex(length): string

Defined in: src/random.ts:440

A random lowercase hexadecimal string.

number

string


integer(min, max): number

Defined in: src/random.ts:246

An integer in [min, max]both ends included.

number

number

number


integers(n, min, max): Float64Array

Defined in: src/random.ts:308

n integers in [min, max], validated once rather than per element.

number

number

number

Float64Array


oneIn(n): boolean

Defined in: src/random.ts:274

number

boolean


permutation(n): number[]

Defined in: src/random.ts:406

number

number[]


pick<T>(items): T

Defined in: src/random.ts:320

One element. Throws when the collection is empty.

T

Collection<T>

T


pickEntry<K, V>(target): [K, V]

Defined in: src/random.ts:339

K extends string | number | symbol

V

Record<K, V> | Map<K, V>

[K, V]


pickIndex<T>(items): number

Defined in: src/random.ts:329

T

Collection<T>

number


pickKey<K, V>(target): K

Defined in: src/random.ts:333

K extends string | number | symbol

V

Record<K, V> | Map<K, V>

K


pickValue<K, V>(target): V

Defined in: src/random.ts:346

One value of a plain object or Map.

K extends string | number | symbol

V

Record<K, V> | Map<K, V>

V


random(): number

Defined in: src/random.ts:236

A double in [0, 1). The Math.random() drop-in.

number


range(start, stop?, step?): number

Defined in: src/random.ts:256

Python’s randrange: a member of [start, stop) stepping by step.

number

number

number

number


reservoir<T>(items, k): T[]

Defined in: src/random.ts:392

k elements from an iterable of unknown length, in one pass.

T

Iterable<T>

number

T[]


sample<T>(items, k): T[]

Defined in: src/random.ts:368

k distinct elements, without replacement.

T

Collection<T>

number

T[]


sampleIntegers(count, min, max): number[]

Defined in: src/random.ts:358

count distinct integers in [min, max], without building the range.

number

number

number

number[]


seed(seed): this

Defined in: src/random.ts:133

Restart from new seed material. A seedable engine restarts in place; an unseedable one is replaced by the default deterministic engine.

Seed

this

const rng = new Random();
rng.seed(42).integer(1, 6); // 3, and chainable

setState(state): this

Defined in: src/random.ts:221

Rewind or fast-forward this stream to a saved snapshot.

EngineState

this

const rng = new Random(42);
rng.setState(rng.getState()); // chainable

shuffle<T>(items): T[]

Defined in: src/random.ts:397

A shuffled copy. The input is untouched.

T

Collection<T>

T[]


shuffleInPlace<T>(items): T[]

Defined in: src/random.ts:402

Fisher–Yates in place — the only mutating shuffle.

T

T[]

T[]


shuffleString(value): string

Defined in: src/random.ts:410

string

string


sign(): number

Defined in: src/random.ts:279

-1 or 1.

number


split(n): Random[]

Defined in: src/random.ts:178

n streams that will not overlap, for parallel work.

number

Random[]

const [a, b, c] = new Random(42, { engine: engines.pcg32 }).split(3);
a.random(); // each worker draws from its own stream

stream(): Generator<number, never, unknown>

Defined in: src/random.ts:313

An endless stream of doubles in [0, 1).

Generator<number, never, unknown>


string(length, alphabet?): string

Defined in: src/random.ts:435

A random string over alphabet (default alphanumeric).

number

string | ArrayLike<string>

string


subset<T>(items, p): T[]

Defined in: src/random.ts:353

Each element kept independently with probability p.

T

Collection<T>

number

T[]


takeOut<T>(items): T

Defined in: src/random.ts:378

Remove one random element and return it. Mutates the array.

T

T[]

T


tryPick<T>(items): T | undefined

Defined in: src/random.ts:325

One element, or undefined when the collection is empty.

T

Collection<T>

T | undefined


weightedPick<T>(items, weights): T

Defined in: src/random.ts:415

One element, with probability proportional to its weight.

T

Collection<T>

ArrayLike<number>

T


weightedSample<T>(items, weights, k): T[]

Defined in: src/random.ts:383

k distinct elements, weightedPick.

T

Collection<T>

ArrayLike<number>

number

T[]


weightedTable<T>(items, weights): object

Defined in: src/random.ts:423

A reusable weightedPick sampler, O(1) per draw. Build it once when the same weights are sampled repeatedly.

T

Collection<T>

ArrayLike<number>

object

pick(): T

T