This project provides a PRNG
functions with a set of Controllers
for generating and manipulating pseudo-random values using a seed-based approach and various algorithms.
It adds additionnal features to the main library: toosoon-prng.
Yarn:
$ yarn add toosoon-prng-controllers
NPM:
$ npm install toosoon-prng-controllers
import { IntController, IntGroupController } from 'toosoon-prng-controllers';
const config = {
count: new IntController('count', 0, 10),
counts: new IntGroupController('counts', 5, 10)
};
console.log(config.count.getValue()); // Pseudo-random integer in the interval [0, 10]
for (let i = 0; i < 5; i++) {
console.log(config.counts.getValueAt(i)); // Pseudo-random integers in the interval [5, 10]
}
Generate pseudo-random boolean value.
class BooleanController(seed: string, probability?: number);
Generate pseudo-random sign value (-1 or 1).
class SignController(seed: string, probability?: number);
Generate pseudo-random floating-point number within a specified range.
class FloatController(seed: string, min?: number, max?: number);
class IntController(seed: string, min: number, max: number);
Generates pseudo-random hexadecimal color.
class HexColorController(seed: string);
Pick a pseudo-random item from a given array.
class ItemController<T>(seed: string, items: T[]);
Pick a pseudo-random property value from a given object.
class ObjectPropertyController<T>(seed: string, object: Record<string, T>);
Select a pseudo-random index from an array of weighted items.
class WeightsController<T>(seed: string, items: Array<{ weight: number; value: T }>);
Group Controllers manage multiple instances of individual controllers.
Manage multiple BooleanController
.
class BooleanGroupController(seed: string, probability: number);
Manage multiple SignController
.
class SignGroupController(seed: string, probability: number);
Manage multiple FloatController
.
class FloatGroupController(seed: string, min: number, max: number);
Manage multiple IntController
.
class IntGroupController(seed: string, min: number, max: number);
Manage multiple HexColorController
.
class HexColorGroupController(seed: string);
Manage multiple ItemController
.
class ItemGroupController<T>(seed: string, items: T[]);
Manage multiple ObjectPropertyController
.
class ObjectPropertyGroupController<T>(seed: string, object: object);
Manage multiple WeightsController
.
class WeightsGroupController<T>(seed: string, items: Array<{ weight: number; value: T }>);
MIT License, see LICENSE for details.