Implement Rand10() Using Rand7()
第53天。
今天的题目是Implement Rand10() Using Rand7()
如果我们是用Rand10()
去实现Rand7()
的话就简单,因为 10 比 7 大,所以:
1 | int rand7() { |
但是题目是用Rand7()
去实现Rand10
,所以我们需要转换一下。
由于1/10 = 1/2 * 1/5
,所以我们可以用rand5()
和rand2()
来实现rand10()
,而rand5()
和rand2()
又可以用rand7()
来实现,所以:
1 | int rand10() { |
其期望为7/2 + 7/5
,所以调用rand7()
的次数会比较大,我们可以用rand7()
去实现rand49()
,由于49 = 7 * 7
,所以我们只需要调用两次rand7()
即可实现出rand49()
然后用rand49()
去实现一个rand40()
,而rand40() % 10 + 1
即实现了rand10()
:
1 | int rand10() { |