Algorithm 算法:Cormen、Leiserson、Rivest和Stein编写的算法简介练习5.1-2

Algorithm 算法:Cormen、Leiserson、Rivest和Stein编写的算法简介练习5.1-2,algorithm,Algorithm,描述仅调用Random(0,1)的过程Random(a,b)的实现 这里随机(0,1)分别以1/2的概率随机生成0或1 Random(a,b)应该以相同的概率随机给出一个介于整数a和整数b之间的数字 谢谢。假设您有一个生成0或1的随机数生成器;如何得到0到3之间的统一随机数?0和7?这些案例应该比一般案例更容易理解。然后,考虑将生成0..7中的数字的RNG转换为生成0..6中的数字的RNG。将这两个答案结合起来,就可以得出一般情况。对于a=0和b某个正整数(为什么?)。您需要log_2 b位以二

描述仅调用Random(0,1)的过程Random(a,b)的实现

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

Random(a,b)应该以相同的概率随机给出一个介于整数a和整数b之间的数字


谢谢。

假设您有一个生成0或1的随机数生成器;如何得到0到3之间的统一随机数?0和7?这些案例应该比一般案例更容易理解。然后,考虑将生成0..7中的数字的RNG转换为生成0..6中的数字的RNG。将这两个答案结合起来,就可以得出一般情况。

对于
a=0
b
某个正整数(为什么?)。您需要
log_2 b
位以二进制形式表示
b
。现在我给了你一个巨大的提示:用二进制思考


一般来说,如果有人交给你一道计算机科学问题,而问题中的某些东西可以从
{0,1}
生成,那么开始用二进制思考。

你尝试过什么?你到底被困在哪里?人们不会为你做作业。堆栈溢出通常不是为了帮助你做作业。这类练习的全部意义在于,你实际上知道如何自己做。如果你不能,问问你的同学或老师。或者更好的办法是,阅读随课程提供的材料(如果有的话)。这不是家庭作业,我知道一种方法。我只是想知道更好的答案。我自己在读这本书,没有参加任何课程。所以我没有同学要问。如果我可以问周围的人,为什么我要费心在这里问一个问题。