Yet another random library.
npm install --save extra-rand
# or
yarn add extra-rand
interface IRandomNumberGenerator {
next(): number // [0, 1)
}
function random(min: number, max: number): number
function random(generator: IRandomNumberGenerator, min: number, max: number): number
The function returns a number in the range [min, max)
.
function randomInt(min: number, max: number): number
function randomInt(generator: IRandomNumberGenerator, min: number, max: number): number
The function returns an integer in the range [Math.ceil(min), Math.floor(max))
.
function randomIntInclusive(min: number, max: number): number
function randomIntInclusive(
generator: IRandomNumberGenerator
, min: number
, max: number
): number
The function returns an integer in the range [Math.ceil(min), Math.floor(max)]
.
function randomBool(probabilityOfTrue: number): boolean
function randomBool(generator: IRandomNumberGenerator, probabilityOfTrue: number): boolean
function randomIndexByWeight(weights: NonEmptyArray<number>): number
function randomIndexByWeight(
generator: IRandomNumberGenerator
, weights: NonEmptyArray<number>
): number
The function returns an index of one of weights.
interface IWeighted {
weight: number
}
function randomWeighted<T extends IWeighted>(values: NonEmptyArray<T>): T
function randomWeighted<T extends IWeighted>(
generator: IRandomNumberGenerator
, values: NonEmptyArray<T>
): T
type IWeightModel<T> = NonEmptyArray<{
weight: number
value: T
}>
function randomByWeightModel<T>(model: IWeightModel<T>): T
function randomByWeightModel<T>(generator: IRandomNumberGenerator, model: IWeightModel<T>): T
enum Type {
Float
, Integer
, IntegerInclusive
}
type IRandomModel =
| number
| Getter<number>
| {
type: Type
min: number
max: number
}
| NonEmptyArray<{
weight: number
value: IRandomModel
}>
function randomByModel(model: IRandomModel): number
function randomByModel(generator: IRandomNumberGenerator, model: IRandomModel): number
function shuffle(arr: unknown[]): void
function shuffle(generator: IRandomNumberGenerator, arr: unknown[]): void
function mapToRange(
value: number
, oldMin: number, oldMax: number
, newMin: number, newMax: number
): number
A low-level function helps you to use random number generators other than Math.random()
.
function mapToIndexByWeight(
value: number
, oldMin: number, oldMax: number
, weights: NonEmptyArray<number>
): number
A low-level function helps you to use random number generators other than Math.random()
.