UNPKG

tetris-prng

Version:

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

26 lines (23 loc) 684 B
function readable() { var value = 0x8988 >>> 0; return function () { var bit0 = (value >> 16) & 1; var bit1 = (value >> 15) & 1; var bit2 = (value >> 13) & 1; var bit3 = (value >> 4) & 1; var leftmostBit = bit0 ^ bit1 ^ bit2 ^ bit3; return (value = ((leftmostBit << 31) | (value >>> 1)) >>> 0); } } function inlined() { var value = 0x8988 >>> 0; return function () { return (value = (((((value >> 16) & 1) ^ ((value >> 15) & 1) ^ ((value >> 13) & 1) ^ ((value >> 4) & 1)) << 31) | (value >>> 1)) >>> 0); } } var assert = require('assert'); var r = readable(); var i = inlined(); assert(r() === i()); assert(r() === i()); assert(r() === i());