🚀 DAY 3 OF LAUNCH WEEK:Announcing Bun and vlt Support in Socket.Learn more
Socket
Book a DemoInstallSign in
Socket

@alisey/pcg32

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@alisey/pcg32

PCG-32 random number generator implemented in WebAssembly

latest
npmnpm
Version
1.1.0
Version published
Maintainers
1
Created
Source

PCG-32: A Seedable 32-bit PRNG

A WebAssembly port of the PCG Random Number Generator, Minimal C Edition.

Usage

import * as pcg from '@alisey/pcg32';

pcg.setState(0x0123456789ABCDEFn);

console.log(pcg.randomInt(10)); // ⇒ 5
console.log(pcg.random());      // ⇒ 0.3697000732146962

API

randomInt(bound: number): number

Returns a uniformly distributed 32-bit unsigned random integer in the range [0, bound), where bound is a number from 1 to 2³².

random(): number

Returns a uniformly distributed floating point number in the range [0, 1) that has been rounded down to the nearest multiple of 2⁻⁵³.

setState(state: bigint): void

Updates the internal state of the generator. The generator has 2⁶⁴ possible internal states, and iterates through all of them. state is a 64-bit unsigned BigInt.

getState(): bigint

Returns a 64-bit unsigned BigInt representing the internal state of the generator.

seed(value?: bigint): void

Seeds the generator with a 64-bit BigInt. If the value is not provided, uses a value based on Math.random().

Performance

As of 2021, in V8 pcg.randomInt() is as fast as Math.floor(Math.random() * n), but doesn't introduce bias. pcg.random() is 2 times slower than Math.random().

In SpiderMonkey and JavaScriptCore both functions are 10 times slower than native equivalents.

Working With This Repo

  • npm install
  • npm run build
  • npm run test
  • npm run demo
  • npm run perf

Keywords

rng

FAQs

Package last updated on 08 Dec 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts