A main application of pseudorandom generators lies in the derandomization of computation that relies on randomness, without corrupting the result of the computation. Physical computers are deterministic machines, and obtaining true randomness can be a challenge. Pseudorandom generators can be used to efficiently simulate randomized algorithms with using little or no randomness. In such applications, the class \mathcal A describes the randomized algorithm or class of randomized algorithms that one wants to simulate, and the goal is to design an "efficiently computable" pseudorandom generator against \mathcal A whose seed length is as short as possible. If a full derandomization is desired, a completely deterministic simulation proceeds by replacing the random input to the randomized algorithm with the pseudorandom string produced by the pseudorandom generator. The simulation does this for all possible seeds and averages the output of the various runs of the randomized algorithm in a suitable way.
Constructions For polynomial time A fundamental question in computational complexity theory is whether all
polynomial time randomized algorithms for
decision problems can be deterministically simulated in polynomial time. The existence of such a simulation would imply that
BPP =
P. To perform such a simulation, it is sufficient to construct pseudorandom generators against the family
F of all circuits of size
s(
n) whose inputs have length
n and output a single bit, where
s(
n) is an arbitrary polynomial, the seed length of the pseudorandom generator is O(log
n) and its bias is ⅓. In 1991,
Noam Nisan and
Avi Wigderson provided a candidate pseudorandom generator with these properties. In 1997
Russell Impagliazzo and
Avi Wigderson proved that the construction of Nisan and Wigderson is a pseudorandom generator assuming that there exists a
decision problem that can be computed in time 2O(
n) on inputs of length
n but requires
circuits of size 2Ω(
n).
For logarithmic space While unproven assumption about circuit complexity are needed to prove that the Nisan–Wigderson generator works for time-bounded machines, it is natural to restrict the class of statistical tests further such that we need not rely on such unproven assumptions. One class for which this has been done is the class of machines whose work space is bounded by O(\log n). Using a repeated squaring trick known as
Savitch's theorem, it is easy to show that every probabilistic log-space computation can be simulated in space O(\log^2 n).
Noam Nisan (1992) showed that this derandomization can actually be achieved with a pseudorandom generator of seed length O(\log^2 n) that fools all O(\log n)-space machines. Nisan's generator has been used by Saks and Zhou (1999) to show that probabilistic log-space computation can be simulated deterministically in space O(\log^{1.5} n). This result was improved by William Hoza in 2021 to space O(\log^{1.5} n/\sqrt{\log \log n}).
For linear functions When the statistical tests consist of all multivariate
linear functions over some
finite field \mathbb F, one speaks of
epsilon-biased generators. The construction of achieves a seed length of \ell= \log n + O(\log (\epsilon^{-1})), which is optimal up to constant factors. Pseudorandom generators for linear functions often serve as a building block for more complicated pseudorandom generators.
For polynomials proves that taking the sum of d small-bias generators fools polynomials of degree d. The seed length is \ell = d \cdot \log n + O(2^d \cdot \log(\epsilon^{-1})).
For constant-depth circuits Constant depth circuits that produce a single output bit. ==Limitations on probability==