UNPKG

tetris-prng

Version:

A Fibonacci linear feedback shift register used as a PRNG (Pseudo-random Number Generator), as in NES Tetris.

37 lines (29 loc) 864 B
var test = require('tape'); var tprng = require('./'); test('default seed', function(t) { t.equal(tprng(), 17604); t.equal(tprng(), 8802); t.equal(tprng(), 4401); t.end(); }) test('custom seed', function(t) { var rand = tprng.lfsr(1000, [1, 9], 15); t.equal(rand(), 33268); t.equal(rand(), 16634); t.equal(rand(), 41085); t.end(); }) test('range info', function(t) { t.ok(tprng.random()); var rand = tprng.lfsr(1000, [1, 9], 15); t.equal(rand.maxValue, 65535); t.equal(rand.random(), 0.5076371404592965); t.equal(rand.random(), 0.25381857022964827); t.equal(rand.random(), 0.6269169146257725); var rand = tprng.lfsr(1000, [1, 9], 31); t.equal(rand.maxValue, 4294967295); t.equal(rand.random(), 0.5000001165317371); t.equal(rand.random(), 0.2500000582658686); t.equal(rand.random(), 0.6250000292493496); t.end(); })