@apocentre/xoshiro
v2.0.5
Published
A pseudo random number generator
Downloads
8
Readme
Xoshiro
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
- CMake
- A proper C/C++ compiler toolchain of the given platform
- Windows: - Visual C++ Build Tools or a recent version of Visual C++ will do (the free Community version works well)
- Unix/Posix: - Clang or GCC - Make
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.