Suppose you have a function (or a magic ball) that is capable of producing a totally random integer between 1 and 5 (inclusive).
Using this, how would you generate a random number (also an integer) between 1 and 7 (inclusive)? (Note that the for the number to be random, all integers between 1 and 7 must have an equal chance of being generated)
Assume that using your 15 generator is pretty timeconsuming, so you want to minimize the number of times you are going to use it.
(In reply to
Quick and Dirty Solution by friedlinguini)
Where you say
int result = (c % 3) + 1;
I assume you mean 7 rather than 3, but then I don't see the reason for checking that it's less than or equal to 7.
Under this assumption, however, while c can be anything from 0 to 24, when taken mod 7, zero through three will come up more often than four through six (on a 4to3 ratio) as 06 is one complete set; 713 is another; 1420 another, but 2124 are an incomplete set, rerepresenting what are now overrepresented digits.

Posted by Charlie
on 20030630 08:50:42 