算法:在Cormen,Leiserson,Rivest和Stein的算法导论中练习5.1-2

时间:2011-03-09 04:07:20

标签: algorithm

描述一个实现的程序Random(a,b)只调用Random(0,1)。

这里随机(0,1)分别以概率1/2随机生成0或1。

随机(a,b)应该以相等的概率随机给出整数a和整数b之间的数字。

感谢。

2 个答案:

答案 0 :(得分:6)

只需为a = 0b做一些正整数(为什么?)就足够了。您需要log_2 b位来表示二进制中的b。现在我给了你一个很大的暗示:用二进制思考。

一般情况下,如果有人向您提出计算机科学问题并且问题中的某些内容可以从{ 0, 1 }生成,请开始考虑使用二进制文件。

答案 1 :(得分:1)

假设您有一个产生0或1的随机数生成器;你怎么得到0到3之间的统一随机数? 0和7?这些案例应该比一般情况更容易弄清楚。在那之后,考虑将产生0..7的数字的RNG转换成0..6的数字。结合这两个答案将为您提供一般案例。