One special case of note is when each random instance yi is distributed uniformly over the entire set of elements in the domain of f that have a length of |x|. In this case f is as hard on average as it is in the worst case. This approach contains two key restrictions. First the generation of y1, ..., yk is performed non-adaptively. This means that y2 is picked before f(y1) is known. Second, it is not necessary that the points y1, ..., yk be uniformly distributed.
Problems that require some privacy in the data (typically cryptographic problems) can use randomization to ensure that privacy. In fact, the only provably secure cryptographic system (the one-time pad) has its security relying totally on the randomness of the key data supplied to the system.
The field of cryptography utilizes the fact that certain number-theoretic functions are randomly self-reducible. This includes probabilistic encryption and cryptographically strong pseudorandom number generation. Also, instance-hiding schemes (where a weak private device uses a strong public device without revealing its data) are easily exemplified by random self-reductions.
Theorem: If a deterministic polynomial time algorithm A computes the discrete logarithm for a 1 /poly(n) fraction of input y (n = |p|), then there is a randomized polynomial time algorithm for discrete logarithm for all inputs.
Given a generator g, and an x ∈ a cyclic group G, the discrete log of x to the base g is an integer k ({0 ≤ k < |G|}) and x = gk. Since the order of group G is known, and B is distributed uniformly on {0, ..., p - 1} (where p = |G| is a prime), then xgB is also distributed uniformly on G. Likewise, gB is uniform in Zp*, meaning it is impossible for it to be 0. Therefore xgB is independent of x, and loggxgB ≡ B + loggx(mod|G|) and the discrete logarithm is self-reducible.
Given the definition of the permanent of a matrix, it is clear that PERM(M) for any n-by-n matrix M is a multivariate polynomial of degree n over the entries in M. Calculating the permanent of a matrix is a difficult computational task---PERM has been shown to be #P-complete (proof). Moreover, we can prove that if we can compute PERM(M) for most matrices, then there exists a random program that computes PERM(M) for all matrices. This demonstrates that PERM is random self-reducible. We will confine ourselves here to discussing matrices where the entries are drawn from a finite field Fp for some prime p, and where all arithmetic is performed in that field.
Let X be a random n-by-n matrix with entries from Fp. Since all the entries of any matrix M + kX are linear functions of k, by composing those linear functions with the degree n mulitvariate polynomial that calculates PERM(M) we get another degree n polynomial on k, which we will call p(k). Clearly, p(0) is equal to the permanent of M.
Suppose we know a program that computes the correct value of PERM(A) for most n-by-n matrices with entries from Fp---specifically, 1 - 1/(3n) of them. Then with probability of approximately two-thirds, we can calculate PERM(M + kX) for k = 1,2,...,n + 1. Once we have those n + 1 values, we can solve for the coefficients of p(k) using interpolation (remember that p(k) has degree n). Once we know p(k) exactly, we evaluate p(0), which is equal to PERM(M).
If we do so, we run the risk of being wrong 1/3 of the time, but by picking multiple random Xs and repeating the above procedure many times, and only providing the majority winner as an answer, we can drive the error rate down very low.