public double[] skipTo(final int index) throws MathIllegalArgumentException {
  if (index == 0) {
    Arrays.fill(x,0);
  }
 else {
    final int i=index - 1;
    final long grayCode=i ^ (i >> 1);
    for (int j=0; j < dimension; j++) {
      long result=0;
      for (int k=1; k <= BITS; k++) {
        final long shift=grayCode >> (k - 1);
        if (shift == 0) {
          break;
        }
        final long ik=shift & 1;
        result^=ik * direction[j][k];
      }
      x[j]=result;
    }
  }
  count=index;
  return nextVector();
}

public double [ ] skipTo ( final int index ) throws MathIllegalArgumentException { if ( index == 0 ) { Arrays . fill ( x , 0 ) ; } else { final int i = index - 1 ; final long grayCode = i ^ ( i > > 1 ) ; for ( int j = 0 ; j < dimension ; j ++ ) { long result = 0 ; for ( int k = 1 ; k <= BITS ; k ++ ) { final long shift = grayCode > > ( k - 1 ) ; if ( shift == 0 ) { break ; } final long ik = shift & 1 ; result ^= ik * direction [ j ] [ k ] ; } x [ j ] = result ; } } count = index ; return nextVector ( ) ; }
skip to the i - th point in the sobol sequence . < p > this operation can be performed in o ( 1 ) .
