extra-rand
TypeScript icon, indicating that this package has built-in type declarations

0.3.2 • Public • Published

extra-rand

Yet another random library.

Install

npm install --save extra-rand
# or
yarn add extra-rand

API

interface IRandomNumberGenerator {
  next(): number // [0, 1)
}

random

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).

randomInt

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)).

randomIntInclusive

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)].

randomBool

function randomBool(probabilityOfTrue: number): boolean
function randomBool(generator: IRandomNumberGenerator, probabilityOfTrue: number): boolean

randomIndexByWeight

function randomIndexByWeight(weights: NonEmptyArray<number>): number
function randomIndexByWeight(
  generator: IRandomNumberGenerator
, weights: NonEmptyArray<number>
): number

The function returns an index of one of weights.

randomWeighted

interface IWeighted {
  weight: number
}

function randomWeighted<T extends IWeighted>(values: NonEmptyArray<T>): T
function randomWeighted<T extends IWeighted>(
  generator: IRandomNumberGenerator
, values: NonEmptyArray<T>
): T

randomByWeightModel

type IWeightModel<T> = NonEmptyArray<{
  weight: number
  value: T
}>

function randomByWeightModel<T>(model: IWeightModel<T>): T
function randomByWeightModel<T>(generator: IRandomNumberGenerator, model: IWeightModel<T>): T

randomByModel

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

shuffle

function shuffle(arr: unknown[]): void
function shuffle(generator: IRandomNumberGenerator, arr: unknown[]): void

mapToRange

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().

mapToIndexByWeight

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().

Readme

Keywords

Package Sidebar

Install

npm i extra-rand

Weekly Downloads

173

Version

0.3.2

License

MIT

Unpacked Size

35.8 kB

Total Files

59

Last publish

Collaborators

  • black_glory