(Crypto Gods, I should begin by stressing that I haven't lost my mind: I'm not doing this in real life, I'm just trying to understand the theory behind what's happening. With your help, hopefully I can do that.)
Let's say I choose the parameters for a linear congruential generator $L$, and pick a seed $L_0$. I then use the LCG to generate sequential pseudorandom numbers $L_1, L_2$ for the following program (which, for the sake of argument, picks two different indices in a 52-element array):
$x := L_1 \bmod 52$
$y := (x + 1 + (L_2 \bmod 51)) \bmod 52$
Let's say I choose $m = 8192$, $a = 4801$, and $c = 83$. By looking at the value of $x$, I can learn quite a lot about the value of $y$: for any $x$, there are only about nine or ten possible subsequent $y$s, and they're very unevenly distributed.
Then I tried other values of $a$ and $c$, and got very different results: for instance, $a = 2049$ and $c = 8141$ gives a distribution that produces all possible values of $y$ for a given $x$, and the distribution is much more uniform. It's still poor, but compared to the first set of parameters, it's a huge improvement.
My question is this: what's causing this drastic variation? I initially thought it might be because $m = 8192$, $a = 4801$, and $c = 83$ didn't satisfy the maximum period length theorem, but then I realised that (a) they do, and (b) that would be unlikely to cause this effect on this scale anyway, since I'm only generating two numbers sequentially. Is it some property of the way that the LCG output is being used that leads to this behaviour, or is it intrinsic to the LCG itself? If it's the latter, is there a theorem that states some properties that must hold in order for the joint distribution of $x$ and $y$ to be uniform (as far as possible, given that the program guarantees $x \neq y$)?