Given a function rand7
which generates a uniform random integer in the range 1 to 7, write a function rand10
which generates a uniform random integer in the range 1 to 10.
Do NOT use system's Math.random()
.
Example 1:
Input: 1 Output: [7]
思路:数学题,1~7 可以转换成 0 ~ 48 ,然后0~40 可以取模10,得到0~9+1 得到1~10;
取到灰色的格子,就不要了,取前40个,因为前面40个的出现的次数都是4次,是相等的;
/**
* 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 {
public int rand10() {
int rand40 = Integer.MAX_VALUE;
while(rand40 >= 40) {
rand40 = (rand7() - 1) * 7 + (rand7() - 1);
}
return rand40 % 10 + 1;
}
}