There's no single method to determine the type of the PRNG.  Indeed, for a cryptographic-strength PRNG you can't distinguish its output from truly random, so you can't determine the type of such PRNGs solely by looking at their output.

Instead, for each of the schemes that you list, there *is* a way to recover the seed and predict future bits from its output.  The way to do that is different for each type of PRNG.  So, the natural approach is: for each candidate type, try the method for recovering the seed that works for that type of PRNG, and see if you're successful.  If you are, you've figured out the type of PRNG.

I don't think there's a more efficient or general technique.  And, frankly, I don't think a more efficient one is needed.  For the types you list, there are very efficient algorithms for cryptanalyzing them, given enough output.  So, I suspect it's going to be hard to beat the "try all schemes" approach.

This works if your set of PRNG types contains only PRNGs that are cryptographically weak, i.e., where it is possible to predict future outputs given enough past outputs.

For details of how to do this for any specific type of PRNG, I suggest you ask a separate question focused on that one type of PRNG.  Here are some resources on some of the PRNG types you listed:

- LFSR: See the [Berlekamp-Massey algorithm](, which is very efficient.  See also

- Linear congruential generators (LCG): There are very efficient ways to recover the seed, based on modular arithmetic.  See

- Multiply with carry (MWC): If you have enough output, it's easy to check whether the output appears to be consistent with a MWC generator: see  If you don't have much output, I'm not sure it is possible (for information-theoretic reasons, since the seed and internal state is so large).