题目描述
https://leetcode-cn.com/problems/implement-rand10-using-rand7/
思路题解
1.两次调用的拒绝采样
# The rand7() API is already defined for you.
# def rand7():
# @return a random integer in the range 1 to 7
class Solution:
def rand10(self):
x,y=rand7(),rand7()
while ((x-1)*7+y)>40:
x,y=rand7(),rand7()
return ((x-1)*7+y-1)%10+1
2.调用4次的拒绝采样
思考
rand_X() 可以等概率的生成[1, X]范围的随机数
那么:
(rand_X() - 1) × Y + rand_Y() ==> 可以等概率的生成[1, X * Y]范围的随机数
即实现了 rand_XY()