470. 用 Rand7() 实现 Rand10()

思路1:根据rand7()产生的小范围数[1,7]组合成[1,10]。
那么如何组合?直接组合好像没办法,那么考虑先组合出更大的范围,再取其中的小范围。
rand7() =>(1,2,3,4,5,6,7)
rand7()-1=>(0,1,2,3,4,5,6)
[rand7()-1]*7=>(0,7,14,21,28,35,42)
(rand7()-1)*7+rand7()-1=>[0,48]

class Solution:
    def rand10(self):
        while True:
            tmp = (rand7()-1)*7+rand7()-1   # =>[0,48]
            if tmp<40:                  # =>[0,39]
                return tmp%10+1         # =>[1,10]

在这里插入图片描述

发布了115 篇原创文章 · 获赞 4 · 访问量 5013

猜你喜欢

转载自blog.csdn.net/qq_27921205/article/details/104338493