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.
Example
Section titled “Example”const rng = new Random(42);rng.integer(1, 6); // 3rng.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));Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new Random(
seedOrEngine?,options?):Random
Defined in: src/random.ts:90
Parameters
Section titled “Parameters”seedOrEngine?
Section titled “seedOrEngine?”options?
Section titled “options?”RandomOptions = {}
Returns
Section titled “Returns”Random
Accessors
Section titled “Accessors”engine
Section titled “engine”Get Signature
Section titled “Get Signature”get engine():
Engine
Defined in: src/random.ts:119
The underlying engine. Hand this to { engine } options elsewhere.
Example
Section titled “Example”const rng = new Random(42);uuid.v4({ engine: rng.engine }); // a UUID from this streamReturns
Section titled “Returns”Methods
Section titled “Methods”below()
Section titled “below()”below(
n):number
Defined in: src/random.ts:251
An integer in [0, n). The form array indices want.
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”number
bigBits()
Section titled “bigBits()”bigBits(
n):bigint
Defined in: src/random.ts:289
An integer built from n random bits, with no width limit.
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”bigint
bigint()
Section titled “bigint()”bigint(
min,max):bigint
Defined in: src/random.ts:261
A bigint in [min, max] — both ends included.
Parameters
Section titled “Parameters”bigint
bigint
Returns
Section titled “Returns”bigint
bits()
Section titled “bits()”bits(
n):number
Defined in: src/random.ts:284
An integer built from n random bits (up to 53).
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”number
bool()
Section titled “bool()”bool():
boolean
Defined in: src/random.ts:266
true or false, evenly.
Returns
Section titled “Returns”boolean
bytes()
Section titled “bytes()”bytes(
n):Uint8Array
Defined in: src/random.ts:293
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”Uint8Array
chance()
Section titled “chance()”chance(
p):boolean
Defined in: src/random.ts:270
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”boolean
char()
Section titled “char()”char(
options?):string
Defined in: src/random.ts:450
A uniformly chosen character, as a string of one code point.
Parameters
Section titled “Parameters”options?
Section titled “options?”Returns
Section titled “Returns”string
chars()
Section titled “chars()”chars(
length,options?):string
Defined in: src/random.ts:455
A random string of length code points, not UTF-16 units.
Parameters
Section titled “Parameters”length
Section titled “length”number
options?
Section titled “options?”Returns
Section titled “Returns”string
choices()
Section titled “choices()”choices<
T>(items,k):T[]
Defined in: src/random.ts:363
k elements with replacement.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
number
Returns
Section titled “Returns”T[]
clone()
Section titled “clone()”clone():
Random
Defined in: src/random.ts:157
An independent copy positioned exactly where this one is.
Returns
Section titled “Returns”Random
Example
Section titled “Example”const rng = new Random(42);const copy = rng.clone();rng.random() === copy.random(); // true, then they divergecodePoint()
Section titled “codePoint()”codePoint(
options?):number
Defined in: src/random.ts:445
A uniformly chosen Unicode code point.
Parameters
Section titled “Parameters”options?
Section titled “options?”Returns
Section titled “Returns”number
combination()
Section titled “combination()”combination<
T>(items,k):T[]
Defined in: src/random.ts:373
k distinct elements, kept in their original order.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
number
Returns
Section titled “Returns”T[]
fillBytes()
Section titled “fillBytes()”fillBytes(
out):void
Defined in: src/random.ts:298
Fill an existing buffer, with no allocation.
Parameters
Section titled “Parameters”Uint8Array
Returns
Section titled “Returns”void
float()
Section titled “float()”float(
min?,max?):number
Defined in: src/random.ts:241
A double in [min, max), or [0, 1) with no arguments.
Parameters
Section titled “Parameters”number
number
Returns
Section titled “Returns”number
floats()
Section titled “floats()”floats(
n):Float64Array
Defined in: src/random.ts:303
n doubles in [0, 1).
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”Float64Array
getState()
Section titled “getState()”getState():
EngineState
Defined in: src/random.ts:201
A JSON-serialisable snapshot. Restore it with Random.setState.
Returns
Section titled “Returns”Example
Section titled “Example”const rng = new Random(42);const saved = rng.getState();const first = rng.random();rng.setState(saved);rng.random() === first; // truehex(
length):string
Defined in: src/random.ts:440
A random lowercase hexadecimal string.
Parameters
Section titled “Parameters”length
Section titled “length”number
Returns
Section titled “Returns”string
integer()
Section titled “integer()”integer(
min,max):number
Defined in: src/random.ts:246
An integer in [min, max] — both ends included.
Parameters
Section titled “Parameters”number
number
Returns
Section titled “Returns”number
integers()
Section titled “integers()”integers(
n,min,max):Float64Array
Defined in: src/random.ts:308
n integers in [min, max], validated once rather than per element.
Parameters
Section titled “Parameters”number
number
number
Returns
Section titled “Returns”Float64Array
oneIn()
Section titled “oneIn()”oneIn(
n):boolean
Defined in: src/random.ts:274
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”boolean
permutation()
Section titled “permutation()”permutation(
n):number[]
Defined in: src/random.ts:406
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”number[]
pick()
Section titled “pick()”pick<
T>(items):T
Defined in: src/random.ts:320
One element. Throws when the collection is empty.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
Returns
Section titled “Returns”T
pickEntry()
Section titled “pickEntry()”pickEntry<
K,V>(target): [K,V]
Defined in: src/random.ts:339
Type Parameters
Section titled “Type Parameters”K extends string | number | symbol
V
Parameters
Section titled “Parameters”target
Section titled “target”Record<K, V> | Map<K, V>
Returns
Section titled “Returns”[K, V]
pickIndex()
Section titled “pickIndex()”pickIndex<
T>(items):number
Defined in: src/random.ts:329
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
Returns
Section titled “Returns”number
pickKey()
Section titled “pickKey()”pickKey<
K,V>(target):K
Defined in: src/random.ts:333
Type Parameters
Section titled “Type Parameters”K extends string | number | symbol
V
Parameters
Section titled “Parameters”target
Section titled “target”Record<K, V> | Map<K, V>
Returns
Section titled “Returns”K
pickValue()
Section titled “pickValue()”pickValue<
K,V>(target):V
Defined in: src/random.ts:346
One value of a plain object or Map.
Type Parameters
Section titled “Type Parameters”K extends string | number | symbol
V
Parameters
Section titled “Parameters”target
Section titled “target”Record<K, V> | Map<K, V>
Returns
Section titled “Returns”V
random()
Section titled “random()”random():
number
Defined in: src/random.ts:236
A double in [0, 1). The Math.random() drop-in.
Returns
Section titled “Returns”number
range()
Section titled “range()”range(
start,stop?,step?):number
Defined in: src/random.ts:256
Python’s randrange: a member of [start, stop) stepping by step.
Parameters
Section titled “Parameters”number
number
number
Returns
Section titled “Returns”number
reservoir()
Section titled “reservoir()”reservoir<
T>(items,k):T[]
Defined in: src/random.ts:392
k elements from an iterable of unknown length, in one pass.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Iterable<T>
number
Returns
Section titled “Returns”T[]
sample()
Section titled “sample()”sample<
T>(items,k):T[]
Defined in: src/random.ts:368
k distinct elements, without replacement.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
number
Returns
Section titled “Returns”T[]
sampleIntegers()
Section titled “sampleIntegers()”sampleIntegers(
count,min,max):number[]
Defined in: src/random.ts:358
count distinct integers in [min, max], without building the range.
Parameters
Section titled “Parameters”number
number
number
Returns
Section titled “Returns”number[]
seed()
Section titled “seed()”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.
Parameters
Section titled “Parameters”Returns
Section titled “Returns”this
Example
Section titled “Example”const rng = new Random();rng.seed(42).integer(1, 6); // 3, and chainablesetState()
Section titled “setState()”setState(
state):this
Defined in: src/random.ts:221
Rewind or fast-forward this stream to a saved snapshot.
Parameters
Section titled “Parameters”Returns
Section titled “Returns”this
Example
Section titled “Example”const rng = new Random(42);rng.setState(rng.getState()); // chainableshuffle()
Section titled “shuffle()”shuffle<
T>(items):T[]
Defined in: src/random.ts:397
A shuffled copy. The input is untouched.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
Returns
Section titled “Returns”T[]
shuffleInPlace()
Section titled “shuffleInPlace()”shuffleInPlace<
T>(items):T[]
Defined in: src/random.ts:402
Fisher–Yates in place — the only mutating shuffle.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”T[]
Returns
Section titled “Returns”T[]
shuffleString()
Section titled “shuffleString()”shuffleString(
value):string
Defined in: src/random.ts:410
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”string
sign()
Section titled “sign()”sign():
number
Defined in: src/random.ts:279
-1 or 1.
Returns
Section titled “Returns”number
split()
Section titled “split()”split(
n):Random[]
Defined in: src/random.ts:178
n streams that will not overlap, for parallel work.
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”Random[]
Example
Section titled “Example”const [a, b, c] = new Random(42, { engine: engines.pcg32 }).split(3);a.random(); // each worker draws from its own streamstream()
Section titled “stream()”stream():
Generator<number,never,unknown>
Defined in: src/random.ts:313
An endless stream of doubles in [0, 1).
Returns
Section titled “Returns”Generator<number, never, unknown>
string()
Section titled “string()”string(
length,alphabet?):string
Defined in: src/random.ts:435
A random string over alphabet (default alphanumeric).
Parameters
Section titled “Parameters”length
Section titled “length”number
alphabet?
Section titled “alphabet?”string | ArrayLike<string>
Returns
Section titled “Returns”string
subset()
Section titled “subset()”subset<
T>(items,p):T[]
Defined in: src/random.ts:353
Each element kept independently with probability p.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
number
Returns
Section titled “Returns”T[]
takeOut()
Section titled “takeOut()”takeOut<
T>(items):T
Defined in: src/random.ts:378
Remove one random element and return it. Mutates the array.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”T[]
Returns
Section titled “Returns”T
tryPick()
Section titled “tryPick()”tryPick<
T>(items):T|undefined
Defined in: src/random.ts:325
One element, or undefined when the collection is empty.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
Returns
Section titled “Returns”T | undefined
weightedPick()
Section titled “weightedPick()”weightedPick<
T>(items,weights):T
Defined in: src/random.ts:415
One element, with probability proportional to its weight.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
weights
Section titled “weights”ArrayLike<number>
Returns
Section titled “Returns”T
weightedSample()
Section titled “weightedSample()”weightedSample<
T>(items,weights,k):T[]
Defined in: src/random.ts:383
k distinct elements, weightedPick.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
weights
Section titled “weights”ArrayLike<number>
number
Returns
Section titled “Returns”T[]
weightedTable()
Section titled “weightedTable()”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.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”Collection<T>
weights
Section titled “weights”ArrayLike<number>
Returns
Section titled “Returns”object
pick()
Section titled “pick()”pick():
T
Returns
Section titled “Returns”T