Randomizer
Interface for a random number generator.
Note: Normally there is no need to implement this interface directly, unless you want to achieve a specific goal with it.
This interface enables you to use random generators from third party libraries such as pure-rand.
Instances are expected to be ready for use before being passed to any Faker constructor, this includes being seed()
ed with either a random or fixed value.
For more information please refer to the documentation.
ts
import { Faker, Randomizer, SimpleFaker } from '@faker-js/faker';
import { RandomGenerator, xoroshiro128plus } from 'pure-rand';
function generatePureRandRandomizer(
seed: number | number[] = Date.now() ^ (Math.random() * 0x100000000),
factory: (seed: number) => RandomGenerator = xoroshiro128plus
): Randomizer {
const self = {
next: () => (self.generator.unsafeNext() >>> 0) / 0x100000000,
seed: (seed: number | number[]) => {
self.generator = factory(typeof seed === 'number' ? seed : seed[0]);
},
} as Randomizer & { generator: RandomGenerator };
self.seed(seed);
return self;
}
const randomizer = generatePureRandRandomizer();
const simpleFaker = new SimpleFaker({ randomizer });
const faker = new Faker({
locale: ...,
randomizer,
});
next
Generates a random float between 0 (inclusive) and 1 (exclusive).
Available since v8.2.0
Returns: number
ts
randomizer.next(): number
randomizer.next() // 0.3404027920160495
randomizer.next() // 0.929890375900335
randomizer.next() // 0.5866362918861691
Source
seed
Sets the seed to use.
Available since v8.2.0
Parameters
Name | Type | Default | Description |
---|---|---|---|
seed | number | number[] | The seed to use. |
Returns: void
ts
randomizer.seed(seed: number | number[]): void
// Random seeds
randomizer.seed(Date.now() ^ (Math.random() * 0x100000000));
// Fixed seeds (for reproducibility)
randomizer.seed(42);
randomizer.seed([42, 13.37]);