New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
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

  • 1.1.0
  • latest
  • npm
  • Socket score

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

  1. npm install
  2. npm run build
  3. npm run test
  4. npm run demo
  5. npm run perf

Keywords

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc