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 详细题解

leetcode中等470rand7实现rand10

LeetCode 470. Implement Rand10() Using Rand7()