Given a pseudo random number generator rand5() that generates a random integer in the set [0,1,2,3,4], how would someone use this to generate a function rand7() that outputs [0,1,2,3,4,5,6] with equal probability.
I was thinking of approaching it this way: reduce the problem to generate number from 0 to 6 using a coin.
We can represent [0,1,2,3,4,5,6] using bit-wise from 000 to 111. Selecting each bit from LSB to MSB can be done using tossing a coin. However, if we continue in this fashion from LSB to MSB then we can get all bits as 111 which is decimal 7. So, in the case of MSB if we get 1 then discarding it and starting again should give the result? Right?
Reducing the problem from rand5() to coin can be done in this way: if the number is 0,2 then we can consider it as head and getting 1,3 can be considered as tail.
Is my solution right?