randomized-algorithm / random

:game_die: Randomness algorithms for JavaScript
https://randomized-algorithm.github.io/random
GNU Affero General Public License v3.0
1 stars 0 forks source link
agpl javascript randfloat randint random randrange

:game_die: @randomized/random


© xkcd.com

Randomness algorithms for JavaScript. See docs. Parent is js-algorithms.

:warning: Depending on your environment, the code may require regeneratorRuntime to be defined, for instance by importing regenerator-runtime/runtime.

import {
    randint , // randint(i, j) => [i, j[ \cap ZZ
    randfloat , // randfloat(i, j) => [i, j[
    sample , // sample(k, array, i, j) /!\ in-place (output is items i through i + k - 1)
    shuffle , // shuffle(array, i, j) /!\ in-place
    reservoir as sampled , // sampled(k, iterable[, output = []]) => sample array
    shuffled , // shuffled(iterable[, output = []]) => shuffled array
    choice , // choice(array, i, j) => item
    randrange , // randrange([start = 0,] stop[, step = 1]) => item
} from '@randomized/random' ;

// NOTE a specific entropy source can be used by constructing these functions
// from their low-level implementation, for instance

import {_fisheryates, _randint} from '@randomized/random';
import {splitmix64, nextFloat64} from '@entropy-source/pseudo-random';

const prng = splitmix64([123, 456]);
const random = () => nextFloat64(prng);
const randint = _randint(random);
const sample = _fisheryates(randint);

License Version Tests Dependencies GitHub issues Downloads

Code issues Code maintainability Code coverage (cov) Code technical debt Documentation Package size