An entropy generator based on first durstenfeld variant of fisher-yates.
This is the main branch.
Latest packages can be find on npm or releases.
Latest public package source code can be found here: main
npm i @mintlayer/entropy-generatorRequires Node.js 20+ or an environment providing crypto.getRandomValues.
In browsers, use a bundler — the buffer dependency is resolved automatically.
Note on output quality: the input array shapes the shuffle, but every output byte is XORed with cryptographically secure random bytes, so the result is uniformly random regardless of the input.
Call the function generateEntropy with a normalized array of integers as parameter.
The second parameter(optional) is the size of the output. If set, it has to be a non-negative integer, smaller or the same size as the input.
A Buffer object will be returned.
By "normalized" it means all values should be between 0-255. You can normalize you array by yourself or the normalizer function exported also by this library.
import { generateEntropy } from '@mintlayer/entropy-generator'
const initialArray = [ 1, 170, 55, 80, 190 ]
const entropy = generateEntropy(initialArray)
// entropy size: 5import { generateEntropy } from '@mintlayer/entropy-generator'
const initialArray = [ 1, 170, 55, 80, 190 ]
const entropy = generateEntropy(initialArray, 3)
// entropy size: 3Call the function normalize an array of integers as parameter.
Another array will be returned with all values between 0-255.
import { normalize } from '@mintlayer/entropy-generator'
const initialArray = [-2000, -15000, 300, 400, 1500]
normalize(initialArray)
// returns: [ 201, 0, 236, 238, 255 ]npm inpm run buildnpm testnpm run test:watchnpm run test:coveragenpm run lintCheck here to see what you should do, and the rules you should follow, to contribute to this project.