描述一个实现的程序Random(a,b)只调用Random(0,1)。
这里随机(0,1)分别以概率1/2随机生成0或1。
随机(a,b)应该以相等的概率随机给出整数a和整数b之间的数字。
感谢。
答案 0 :(得分:6)
只需为a = 0
和b
做一些正整数(为什么?)就足够了。您需要log_2 b
位来表示二进制中的b
。现在我给了你一个很大的暗示:用二进制思考。
一般情况下,如果有人向您提出计算机科学问题并且问题中的某些内容可以从{ 0, 1 }
生成,请开始考虑使用二进制文件。
答案 1 :(得分:1)
假设您有一个产生0或1的随机数生成器;你怎么得到0到3之间的统一随机数? 0和7?这些案例应该比一般情况更容易弄清楚。在那之后,考虑将产生0..7的数字的RNG转换成0..6的数字。结合这两个答案将为您提供一般案例。