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]
Example 2:
Input: 2 Output: [8,4]
Example 3:
Input: 3 Output: [8,1,10]
Note:
rand7is predefined.- Each testcase has one argument:
n, the number of times thatrand10is called.
Follow up:
- What is the expected value for the number of calls to
rand7()function? - Could you minimize the number of calls to
rand7()?
参考资料:here。
// 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() {
int idx;
do {
int row = rand7();
int col = rand7();
idx = col + (row - 1) * 7;
} while (idx > 40);
return 1 + idx % 10;
}
};
来源:CSDN
作者:李歇特冯·兹拜因巴哈
链接:https://blog.csdn.net/m0_37518259/article/details/103889185