leetcode470——用 Rand7() 实现 Rand10()

Posted dtwd886

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode470——用 Rand7() 实现 Rand10()相关的知识,希望对你有一定的参考价值。

题目链接:

https://leetcode-cn.com/problems/implement-rand10-using-rand7/

思路:

首先利用(rand7()-1)*7 随机生成等间隔的数据0,7,14,21,28,35,42

 然后利用rand7()在生成数据将数据插入到第一步生成的数据中,保证随机性。

从而得到1,2,3,...,49

对于大于40的数据重新生成,而对于小于的数据对十取模加一,这样保证了1-40之间数据的概率是完全相同的。

// 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 num;
        do
        
            num=rand7()+7*(rand7()-1);
        while(num>40);
        return num%10+1;
    
;

 

以上是关于leetcode470——用 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 面试题 17.14. 最小K个数(堆排,快排)/剑指 Offer 10- I. 斐波那契数列 /470. 用 Rand7() 实现 Rand10()(拒绝采样,学!!!)