leetcode 470 用 Rand7() 实现 Rand10()
思路
- 使用 rand7() 获取一个 1~6 的数 a;
- 使用 rand7() 获取一个 1~5 的数 b;
- 1~6 的是否为单数的概率是 0.5;
- 就根据这个概率去取 0 或 5 + b;
题解
class Solution {
public:
int rand10() {
int a = rand7(), b = rand7();
// 使用 rand7() 获取一个 1~6 的数 a
while(a == 7) a = rand7();
// 使用 rand7() 获取一个 1~5 的数 b;
while(b > 5) b = rand7();
// 取 0 或 5 + b
return (a & 1 ? 0 : 5) + b;
}
};