blob: a0bc14bfaaeca3ea8d865e54ca52958d867b6430 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/**
* 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](https://github.com/dubzzz/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](https://fakerjs.dev/api/randomizer.html).
*
* @example
* 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,
* });
*
* @since 8.2.0
*/
export interface Randomizer {
/**
* Generates a random float between 0 (inclusive) and 1 (exclusive).
*
* @example
* randomizer.next() // 0.3404027920160495
* randomizer.next() // 0.929890375900335
* randomizer.next() // 0.5866362918861691
*
* @since 8.2.0
*/
next(): number;
/**
* Sets the seed to use.
*
* @param seed The seed to use.
*
* @example
* // Random seeds
* randomizer.seed(Date.now() ^ (Math.random() * 0x100000000));
* // Fixed seeds (for reproducibility)
* randomizer.seed(42);
* randomizer.seed([42, 13.37]);
*
* @since 8.2.0
*/
seed(seed: number | number[]): void;
}
|