1. Generate a random 32 bit number (this is the first in the list)
2. Generate a second random 32 bit number, discarding it if it's 2**32-1. Once you find one, add the Nth unchosen number to the list (so if it's less than the first number append it, otherwise increment it then append it)
3. Do that again, discarding it if it's greater than or equal to 2**32-2
4. Repeat until you get to 2**31
5. Choose a random 31-bit number (probably a 32-bit one with one bit discarded)
6. Do the above process for a while