This is basic Computer Science theory. All of these "random" number algorithms are based on psuedorandom sequence generation. By definition, a psuedorandom sequence will repeat itself. The repetition frequency is based upon the size of the sequence generator. The actual sequence of numbers is based on the polynomial used to generate the sequence as well as the seed used to start the generator.
This sort of algorithm generates a sequence that looks like white noise on a short time scale (compared to the overall sequence length). Such sequences are used in hardware applications such as spread-spectrum and frequency-hopping transmission systems. Because they do repeat in a deterministic manner, a signal modulated or hopped in such a way can be correlated and reconstructed from the psuedorandom sequence as long as you know the number of bits in use, the rate at which the signal is modulated or hopped by the sequence and the polynomial used to generate the sequence. (But that is getting deep into communications theory and not really all that relevant to this discussion).
All I am really saying is that you will have to be aware of the fact that the numbers generated are not truly random and will repeat in time. This may or may not be a problem with a particular application, you will have to decide that based upon what you are trying to do. For short runs of numbers using varying seed values, you can achieve sequences that behave like white noise. For longer runs of numbers, you either need to find a true random source or need to insert some sort of method to change seeds as you go. If you generate your numbers in response to user input, you can use a timestamp value as a seed in a fairly effective way as the exact time at which a user action occurs is as good as random for most applications.
Martin Fredrickson
Test Engineer
Northrop Grumman
Advanced Systems and Products
San Diego, CA 92128