code: function lcg( val ) {
  	var seed;
  	if ( arguments.length ) {
  		if ( typeof val !== 'number' || val !== val || val % 1 !== 0 || val < 1 ) {
  			throw new TypeError( 'lcg()::invalid input argument. Seed must be a positive integer.' );
  		}
  		seed = val;
  	} else {
  		seed = Date.now() % 100000000;
  	}
  	/**
  	* FUNCTION: lcg( [N] )
  	*	Linear congruential pseudorandom number generator.
  	*
  	* @param {Number} [N] - number of pseudorandom numbers to return
  	* @returns {Number|Array} pseudorandom floating-point number(s) between 0 and 1
  	*/
  	return function lcg( N ) {
  		var arr,
  			rand;
  		if ( !arguments.length ) {
  			seed = seed ^ MASK;
  			seed = ( A * seed ) % M;
  			rand = seed / M;
  			seed = seed ^ MASK;
  			return rand;
  		}
  		if ( typeof N !== 'number' || N !== N || N%1 !== 0 || N < 1 ) {
  			throw new TypeError( 'lcg()::invalid input argument. Array length must be a positive integer.' );
  		}
  		arr = new Array( N );
  		for ( var i = 0; i < N; i++ ) {
  			seed = seed ^ MASK;
  			seed = ( A * seed ) % M;
  			arr[ i ] = seed / M;
  			seed = seed ^ MASK;
  		}
  		return arr;
  	};
  }
docs: LCG // 
  FUNCTION: lcg( [seed] )
  Returns a linear congruential pseudorandom number generator. If not provided a seed, a seed is generated based on the current time.
  
  @param {Number} [seed] - random number generator seed
  @returns {Function} generator