LeetCode 470. 用 Rand7() 实现 Rand10()
Posted Blocking The Sky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 470. 用 Rand7() 实现 Rand10()相关的知识,希望对你有一定的参考价值。
题目描述
已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。
不要使用系统的 Math.random() 方法。
思路
枚举如下:
a 1 2 3 4 5 6 7
b
1 2 3 4 5 6 7 8
2 3 4 5 6 7 8 9
3 4 5 6 7 8 9 0
4 5 6 7 8 9 0 1
5 6 7 8 9 0 1 2
6 7 8 9 0 1 2 3
7 8 9 0 1 2 3 4
去掉右上角的
6 7 8
7 8 9
8 9 0 后
每个数字的出现次数为4次,0-9的概率相同
代码
// 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 a,b;
a=rand7();
b=rand7();
if(a>4&&b<4)
return rand10();
else
return (a+b)%10+1;
}
};
以上是关于LeetCode 470. 用 Rand7() 实现 Rand10()的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode No.470 用 Rand7() 实现 Rand10()
Leetcode No.470 用 Rand7() 实现 Rand10()
LeetCode 470 用Rand7()实现Rand10()[数学] HERODING的LeetCode之路
精选力扣500题 第34题 LeetCode 470. 用 Rand7() 实现 Rand10()c++ / java 详细题解