通过rand5()实现rand7()是一个挺有名的概率学面试题。是这样的:
函数rand5()可以随机产生概率均等的1-5这5个自然数。
要求通过rand5(),实现rand7(),即产生随机分布在1-7区间内的自然数。
大多数解法就是一个思路:把rand5()范围扩大然后映射到1-7这个区间内:
http://www.cnblogs.com/dwdxdy/archive/2012/07/28/2613135.html
但事实上,这些算法在极端情况下,会出现无限循环而得不到结果。
求(证):
有没有一种解法,能在有限的步骤内实现上述要求?
函数rand5()可以随机产生概率均等的1-5这5个自然数。
要求通过rand5(),实现rand7(),即产生随机分布在1-7区间内的自然数。
大多数解法就是一个思路:把rand5()范围扩大然后映射到1-7这个区间内:
http://www.cnblogs.com/dwdxdy/archive/2012/07/28/2613135.html
但事实上,这些算法在极端情况下,会出现无限循环而得不到结果。
求(证):
有没有一种解法,能在有限的步骤内实现上述要求?