Implement a pseudorandom randomnumber (bit) generator (PRNG). A good random bit generator is supposed to generate bits independently, i.e., the probability of bit 0 (p0) is the same as the probability of bit 1 (p1), where
p0 = p1 = 0.5 and p0 + p1 = 1.
However, one student (Alice) implemented it in a bad way, i.e., p0 6= p1. For example, p0 = 0.3
and p1 = 0.7, or p0 = 0.2 and p1 = 0.8. Of course, the actual probabilities and her implementation
details are unknown to you. You job is to use Alice’s defective generator to produce an unbiased
random bit string without using additional cryptographic tools.
First, clearly explain your step-by-step algorithms (or pseudocode). Second, provide a formal proof
of correctness.