Skip to content

Random value generators (float, int, vector and noise) for PEX.

License

Notifications You must be signed in to change notification settings

pex-gl/pex-random

Repository files navigation

pex-random

npm version stability-stable npm minzipped size dependencies types Conventional Commits styled with prettier linted with eslint license

Random value generators (float, int, vector and noise) for PEX.

Installation

npm install pex-random

Usage

import random from "pex-random";

// Use global PRNG
console.log(random.float());
// => unpredictable (seeded by performance.now())

// Seed global PRNG
random.seed("0");
console.log(random.float());
// => predictable, always returns: 0.8071179636424909

// Use local PRNG
const localRandom = random.create();
console.log(localRandom.float());
// => unpredictable (seeded by performance.now() + INCREMENT)

// Use seeded local PRNG
const localSeededRandom = random.create("0");
console.log(localSeededRandom.float());
// => predictable, always returns: 0.8071179636424909

Notes:

API

Modules

pex-random

Classes

pex-random

Typedefs

FBMOptions
vec2 : module:pex-math~vec2
vec3 : module:pex-math~vec3
quat : module:pex-math~quat

pex-random

Summary: Export a Random instance using the global PRNG:

  • The instance is seeded by performance.now()
  • Call random.seed("seed") to overwrite the global PRNG: all other calls to random.float() will derive from the new seeded state.
  • Call random.create() to create a local instance of Random with a separate unpredictable PRNG.
  • Call random.create("seed") to create a local instance of Random with a separate predictable PRNG: all other calls to random.float() will derive from the new seeded state.

pex-random

Kind: global class

new Random([seed])

Creates an instance of Random.

Param Type Default
[seed] string | number "Random.NOW + Random.#instanceCount"

pex-random.create ⇒ Random

Create an instance of Random.

Kind: instance property of pex-random

Param Type Description
[seed] string | number If omitted, the global PRNG seed will be used and incremented for each local PRNG.

pex-random.seed(s)

Set the seed for the random number generator.

Kind: instance method of pex-random

Param Type Description
s string Seed value

pex-random.float([min], [max]) ⇒ number

Get a float between min and max. Defaults to:

  • 0 <= x < 1 if no argument supplied
  • 0 <= x < max if only one argument supplied

Kind: instance method of pex-random

Param Type
[min] number
[max] number

pex-random.int([min], [max]) ⇒ number

Get an int between min and max. Defaults to:

  • 0 <= x < Number.MAX_SAFE_INTEGER if no argument supplied
  • 0 <= x < max if only one argument supplied

Kind: instance method of pex-random

Param Type
[min] number
[max] number

pex-random.vec2([r]) ⇒ vec2

Get a vec2 included in a radius.

Kind: instance method of pex-random

Param Type Default Description
[r] number 1 radius

pex-random.vec3([r]) ⇒ vec3

Get a vec3 included in a radius.

Kind: instance method of pex-random

Param Type Default Description
[r] number 1 radius

pex-random.vec2InRect(rect) ⇒ vec2

Get a vec2 included in a rectangle.

Kind: instance method of pex-random

Param Type Description
rect number rectangle

pex-random.vec3InAABB(bbox) ⇒ vec3

Get a vec3 included in a rectangle bbox.

Kind: instance method of pex-random

Param Type Description
bbox number rectangle bbox

pex-random.quat() ⇒ quat

Get a random quaternion.

Kind: instance method of pex-random See

  • [Graphics Gems III, Edited by David Kirk, III.6 UNIFORM RANDOM ROTATIONS]
  • Steve LaValle

pex-random.chance([probability]) ⇒ boolean

Returns a chance of an event occuring according to a given probability between 0 and 1.

Kind: instance method of pex-random

Param Type Default Description
[probability] number 0.5 Float between 0 and 1.

pex-random.element(list) ⇒ *

Gets a random element from a list.

Kind: instance method of pex-random

Param Type
list Array

pex-random.noise2(x, y) ⇒ number

Samples the noise field in 2 dimensions.

Kind: instance method of pex-random Returns: number - in the interval [-1, 1]

Param Type
x number
y number

pex-random.noise3(x, y, z) ⇒ number

Samples the noise field in 3 dimensions.

Kind: instance method of pex-random Returns: number - in the interval [-1, 1]

Param Type
x number
y number
z number

pex-random.noise4(x, y, z, w) ⇒ number

Samples the noise field in 4 dimensions.

Kind: instance method of pex-random Returns: number - in the interval [-1, 1]

Param Type
x number
y number
z number
w number

pex-random.fbm(options, ...d) ⇒ number

Fractional Brownian motion (also called fractal Brownian motion) noise. Default to 1/f noise with 8 octaves.

Kind: instance method of pex-random Returns: number - in the interval [-1, 1]

Param Type Description
options FBMOptions
...d number x, y, z?, w?

FBMOptions

Kind: global typedef Properties

Name Type Default
[octaves] number 8
[lacunarity] number 2
[gain] number 0.5
[frequency] number 1
[amplitude] number gain
[noise] function

vec2 : module:pex-math~vec2

Kind: global typedef

vec3 : module:pex-math~vec3

Kind: global typedef

quat : module:pex-math~quat

Kind: global typedef

License

MIT. See license file.