code: function ( n, buffer, bytes ) {
                  var s = ( n % k ) * slen
                      // how many bytes to read/consume from the input buffer [1 to 4]
                      , rbytes = bytes >>> 0 ? abs( bytes ) % 5 : ibytes
                      , blen = buffer.length - rbytes
                      , bruint = null
                      , sum = 0
                      , b = 0
                      ;
                  /*
                   * NOTE: js is not capable to handle integers larger than ~2^53,
                   * when the sum exceeds this limit, we expect to get get biased
                   * results, or in other words, more collisions. It will happens
                   * when we are using large primes as range, or with long buffer
                   * in input. If sum === sum + 1, we could break the for cycle.
                   */
                  if ( rbytes === 1 ) {
                      // use [] notation when reading input, 1 byte at the time.
                      if ( ibytes === 1 ) {
                          // read input and seed 1 byte at the time
                          for ( ; b <= blen && s <= rlen; ++b, ++s )
                              sum += buffer[ b ] * result[ s ];
                          return sum % prange;
                      }
                      for ( ; b <= blen && s <= rlen; ++b, s += ibytes )
                          sum += buffer[ b ] * result[ ruint ]( s );
                      return sum % prange;
                  }
                  // build string for read method (16, 24 or 32 bits unsigned integers)
                  bruint =  bruint = 'readUInt' + ( rbytes << 3 ) + 'BE';
                  for ( ; b <= blen && s <= rlen; b += rbytes, s += ibytes ) {
                      sum += buffer[ bruint ]( b ) * result[ ruint ]( s );
                      sum %= prange;
                  }
                  return sum;
              }
docs: generate random seed sequence for requested range