具体思路见:力扣
代码如下:
// The rand7() API is already defined for you.
// int rand7();
// @return a random integer in the range 1 to 7
class Solution {
public:
int rand10() {
//调用一次rand7()得到7种可能1-7
//a
//b>a b/a*a
int x=(rand7()-1)*7+rand7()-1;//生成从0-48的数,不是1~49!不知为何不减1就会报错
if(x<40)
{
// return x/4+1;//1~10
return x%10+1;//上下两个都行
}
// assert(rand7()==rand7());assert的执行是判断expression是否为假,只有在表达式为假时,才会调用abort报警。
//x=(ax+b)%c
//x=x^x<<13;这两行是leetcode打乱随机种子的操作
return rand10();//如果生成的随机数不满足x<40,就继续递归调用,直到满足x<40
}
};