p144 用 rand7() 实现 rand10() (leetcode 470)

一:解题思路

如果x>y,那么一定可以用randx去实现randy。其中,randx表示等概率的生成1到x的函数。randy表示等概率的生成1到y的函数。

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    int rand10() 
    {
        int x = 2147483647;
        while (x > 10)
            x = 7 * (rand7() - 1) + rand7();
        return x;
    }
};

Java:

class Solution extends SolBase {
        public int rand10() 
        {
              int x=Integer.MAX_VALUE;
              while (x>10)
                  x=7*(rand7()-1)+rand7();
              
              return x;
        }
    }

 

上一篇:LeetCode 470.用Rand7()实现Rand10()


下一篇:雪花算法生成一个id