题目描述:
示例 1:
示例 2:
示例 3:
思路:
- 已知 rand_a() 可以等概率的生成[1, a]范围的随机数
(rand_a() - 1) × b + rand_b() ==> 可以等概率的生成[1, a * b]范围的随机数
即实现了 rand_ab() - rand_ab大于a且ab是a的倍数,则,rand_ab % a + 1 = rand_b;
代码实现:
class Solution extends SolBase {
public int rand10() {
while(true) {
int num = (rand7() - 1) * 7 + rand7();
if(num <= 40) return num % 10 + 1;
}
}
}