470. 用 Rand7() 实现 Rand10()/C++

在这里插入图片描述
在这里插入图片描述
将2个随机数加起来取个位,就是如上图的结果。
只要将右上角的区域去掉就可以保证每个数字都只出现4次,这也保证了均匀。

// 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=rand7();
        int b=rand7();
        if(a>4 && b<4)
            return rand10();
        else
            return (a+b)%10+1;
    }
};

猜你喜欢

转载自blog.csdn.net/Zolewit/article/details/89485577