@saehrimnir/druidjs / Randomizer
Class: Randomizer
Defined in: util/randomizer.js:45
Seeded pseudo-random number generator.
Implements sfc32 (Small Fast Counting, Doty-Humphrey), a 128-bit-state counter-based generator that passes TestU01 BigCrush. It is preferred here over the more familiar Mersenne Twister, which needs a 2.5 KB state, is markedly slower to seed, and whose GF(2)-linear output fails BigCrush's matrix-rank and linear-complexity tests.
Every operation is 32-bit integer arithmetic (^ << >>> + and Math.imul), all of which ECMAScript specifies exactly. The stream is therefore identical on every engine for a given seed — unlike floating point transcendentals, which are only "implementation-approximated". See DR for what that does and does not guarantee about the output of an algorithm.
See
Example
const R = new Randomizer(1212);
R.random; // float in [0, 1)
R.random_int; // uint32Constructors
Constructor
new Randomizer(_seed?: number): Randomizer;Defined in: util/randomizer.js:63
Parameters
| Parameter | Type | Description |
|---|---|---|
_seed? | number | The seed for the random number generator. If _seed == null then the actual time gets used as seed. Default is new Date().getTime() |
Returns
Randomizer
Properties
| Property | Type | Default value | Defined in |
|---|---|---|---|
_a | number | 0 | util/randomizer.js:47 |
_b | number | 0 | util/randomizer.js:49 |
_c | number | 0 | util/randomizer.js:51 |
_d | number | 0 | util/randomizer.js:53 |
_seed | number | undefined | util/randomizer.js:55 |
_val | number | null | null | util/randomizer.js:57 |
Accessors
random
Get Signature
get random(): number;Defined in: util/randomizer.js:95
Returns a float between 0 and 1.
Returns
number
- A random number between [0, 1]
random_int
Get Signature
get random_int(): number;Defined in: util/randomizer.js:104
Returns an integer between 0 and MAX_INTEGER.
Returns
number
- A random integer.
seed
Get Signature
get seed(): number;Defined in: util/randomizer.js:86
Returns the seed of the random number generator.
Returns
number
- The seed.
Set Signature
set seed(_seed: number): void;Defined in: util/randomizer.js:69
Parameters
| Parameter | Type |
|---|---|
_seed | number |
Returns
void
Methods
choice()
choice<T>(A: T[], n: number): T[];Defined in: util/randomizer.js:157
Returns n samples drawn from A without replacement.
Uses a partial Fisher-Yates shuffle over a scratch index array, which runs in O(n): A itself is never touched, and exactly n random values are consumed. Removing each picked index with Array.prototype.splice instead would shift the tail on every draw and make the call O(n²) — measurably worse from a few hundred elements upward, and 27× slower at n = 4000.
Type Parameters
| Type Parameter | Description |
|---|---|
T | Returns samples from an input Matrix or Array. |
Parameters
| Parameter | Type | Description |
|---|---|---|
A | T[] | The input Matrix or Array. |
n | number | The number of samples. |
Returns
T[]
A random selection form A of n samples.
gauss_random()
gauss_random(): number;Defined in: util/randomizer.js:127
Returns a normally distributed number with mean 0 and standard deviation 1.
Uses the Marsaglia polar method, which yields two values per iteration; the spare is cached and returned by the following call.
Returns
number
A standard normal variate.
choice()
static choice<T>(
A: T[],
n: number,
seed?: number): T[];Defined in: util/randomizer.js:189
Type Parameters
| Type Parameter | Description |
|---|---|
T | Returns samples from an input Matrix or Array. |
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
A | T[] | undefined | The input Matrix or Array. |
n | number | undefined | The number of samples. |
seed | number | 1212 | The seed for the random number generator. |
Returns
T[]
- A random selection form
Aofnsamples.