<p>You can certainly jump in xorshift, and the process is described <a href="https://arxiv.org/pdf/1404.0390.pdf" rel="nofollow">here</a>, but I haven't read that for myself so I don't know how easy it is to follow.</p>

<p>Alternatively, you could look at <a href="http://www.pcg-random.org/" rel="nofollow">PCG</a> which offers a jump function by using an underlying LCG (the same as @Daerst's answer) but post-processes it to improve its statistical properties, or some of the splittable generators described <a href="http://on-demand.gputechconf.com/gtc/2016/presentation/s6665-guy-steele-fast-splittable.pdf" rel="nofollow">here</a>.  The SplitMix generator, for example, has only an in-loop addition of a constant, so to jump an arbitrary distance you need only multiply the jump distance by the constant and add that (<a href="http://xoroshiro.di.unimi.it/splitmix64.c" rel="nofollow">here</a>'s a SplitMix derivitive that apparently passes BigCrush).</p>
Efficient Xorshift skip ahead
<p>I need a fast random number generator that allows me to randomly access numbers at various positions of the random number sequence. I chose Xorshift, because it's fast and easy to implement.</p>

<p>To get a specific random number from the sequence, I implemented the following method (<code>mPos</code> saves the position of the next random number):</p>

<pre><code>void XorshiftRandomGenerator::skipTo(unsigned int pos)
{
    // Reset if we passed the position
    if (mPos&gt;pos)
        reset();

    // Generate random numbers until we're done
    while (mPos&lt;pos)
        random();
}
</code></pre>

<p>A subsequent <code>random()</code> will return the desired number, but this method is very expensive. Is there a way to skip a large amount of random numbers with Xorshift, without calculating every random number in between?</p>

<p>As an alternative I could go with another random number generator. Could you suggest one that allows fast skipping ahead?</p>