BlackGlory / extra-rand

🌳 Yet another random library

Home Page:https://www.npmjs.com/package/extra-rand

Repository from Github https://github.comBlackGlory/extra-randRepository from Github https://github.comBlackGlory/extra-rand

extra-rand

Yet another random library.

Install

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

API

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

randomFloat

function randomFloat(min: number, max: number): number
function randomFloat(generator: IRandomNumberGenerator, min: number, max: number): number

The function returns a float 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)].

randomNumber

enum NumberType {
  Float
, Integer
, IntegerInclusive
}

type INumberModel =
| number
| Getter<number>
| {
    type: NumberType
    min: number
    max: number
  }
| NonEmptyArray<{
    weight: number
    model: INumberModel
  }>

function randomNumber(model: INumberModel): number
function randomNumber(generator: IRandomNumberGenerator, model: INumberModel): number

randomBool

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

randomPickItem

function randomPickItem<T>(items: NonEmptyArray<T>): T
function randomPickItem<T>(
  generator: IRandomNumberGenerator
, items: NonEmptyArray<T>
): T

randomPickWeightedItem

interface IWeightedItem {
  weight: number
}

function randomPickWeightedItem<T>(items: NonEmptyArray<T>, weights: NonEmptyArray<number>): T
function randomPickWeightedItem<T extends IWeightedItem>(items: NonEmptyArray<T>): T
function randomPickWeightedItem<T>(
  generator: IRandomNumberGenerator
, items: NonEmptyArray<T>
, weights: NonEmptyArray<number>
): T
function randomPickWeightedItem<T extends IWeightedItem>(
  generator: IRandomNumberGenerator
, items: NonEmptyArray<T>
): T

randomPickIndex

function randomPickIndex(items: NonEmptyArray<unknown>): number
function randomPickIndex(
  generator: IRandomNumberGenerator
, items: NonEmptyArray<unknown>
): number

The function returns an integer in the range [0, items.length].

randomPickWeightedIndex

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

The function returns an integer in the range [0, weights.length].

shuffle

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

About

🌳 Yet another random library

https://www.npmjs.com/package/extra-rand

License:MIT License


Languages

Language:TypeScript 98.8%Language:JavaScript 1.2%