470. 用 Rand7() 实现 Rand10()

/**
 * The rand7() API is already defined in the parent class SolBase.
 * public int rand7();
 * @return a random integer in the range 1 to 7
 */
class Solution extends SolBase {
    /**
     * rand7 = 1 ~ 7
     * rand7 - 1 = 0 ~ 6
     * (rand7 - 1) * 7 = 0, 7, 14, ..., 42
     * (rand7 - 1) * 7 + (rand7 - 1) = 0 ~ 48
     *
     *
     * rand10 = 1 ~ 10 = (0 ~ 9) + 1
     * rand10 = (0 ~ 9) % 10 + 1 = (10 ~ 19) % 10 + 1 = (20 ~ 29) % 10 + 1 = (30 ~ 39) % 10 + 1
     * @return
     */

    private int tmp() {
        while (true) {
            int tmp = (rand7() - 1) * 7 + rand7() - 1;
            if (tmp < 40) {
                return tmp;
            }
        }
    }

    public int rand10() {
        return tmp() % 10 + 1;
    }
}