A wide variety of wireless applications, including data encryption and circuit testing, require random numbers. As the cost of the hardware become cheaper, it is feasible and frequently necessary to implement the random number generator directly in hardware itself. Ideally, the generated random number should be uncorrelated. A generator can be either "truly random" or "pseudo random." The former exhibits true randomness and the value of next number is unpredictable. The later only appears to be random. The sequence is based on specific mathematical algorithms, and thus the pattern is repetitive and predictable. However, if the cycle period is very large, the sequence appears to be non-repetitive and random. Ideally the spreading codes used in direct sequence spread spectrum systems would be truly random binary sequences, as might be produced by consecutive tosses of an unbiased, memory less coin.