Skip to content

Apocentre/xoshiro

 
 

Repository files navigation

Xoshiro

Node.js CI npm version

Apocentre Fork

This fork makes this package compatible with the BC-UR specification for use with the 256** algorithm.

What is this?

A pseudo-random-number-generator module implemented in N-API. Here is all about the algorithms.

Requirements

Installation

Just run this command:

yarn add @apocentre/xoshiro

Usage

const xoshiro = require('xoshiro');
const crypto = require('crypto');

// create a PRNG with an algorithm and a seed
const seed = crypto.randomBytes(32);
const prng = xoshiro.create('256+', seed);

// generate a random unsigned 32-bit integer
console.log(prng.roll());

// store the current state
const s = prng.state
// generate a random number
const x = prng.roll()
// restore the state
prng.state = s
// generate a random number from the previous state
const y = prng.roll()
// and they should be equal
console.log(x === y)  // -> true

Supported algorithms

  • '256+' xoshiro256+, requires the seed to be of at least 32 bytes
  • '256++' xoshiro256++, requires the seed to be of at least 32 bytes
  • '256**' xoshiro256**, requires the seed to be of at least 32 bytes
  • '512+' xoshiro512+, requires the seed to be of at least 64 bytes
  • '512++' xoshiro512++, requires the seed to be of at least 64 bytes
  • '512**' xoshiro512**, requires the seed to be of at least 64 bytes

Note: In order to make it work, the seed used to initialize the PRNG should not be all 0's.

About

A pseudo-random-number-generator module implemented in N-API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 81.7%
  • JavaScript 14.2%
  • CMake 4.1%