This is the archived website of SI 486H from the Spring 2016 semester. Feel free to browse around; you may also find more recent offerings at my teaching page.

Problem 28

Combining two PRNGs

Due: February 23
Points: 3

You are given two PRNGs, A and B. You don't know how either one works internally, but you know that they both share the following properties in common:

  • Both PRNGs are seeded with a value from 0 up to 255.
  • Both PRNGs output numbers from 0 up to 255.
  • Both PRNGs have period length equal to \(2^{32}\).

Your task is to come up with a way of combining these two PRNGs to make a new PRNG that is even better than these two. Your combined PRNG should behave the same as A and B in that it is seeded with a single value from 0 up to 255, and it should produce numbers in the range of 0 up to 255. Here are the rules:

  • Your PRNG may sample any amount of random numbers from A and B, and do any amount of computation with them, to produce each output from your PRNG.
  • Your PRNG may seed sequences A and B to re-start them at any time. (Hint: you should probably start by seeding them!)
  • Your PRNG may not store any information between outputting values. This is to prevent you from just making a new PRNG and forgetting about A and B entirely.

Describe your method clearly and simply. Then analyze it and tell me what the period length of your new PRNG would (hopefully) be. (Hint: what is the maximum period length that is possible in this situation? You can achieve it!)