Corman练习:Random(a,b)

时间:2019-03-02 18:32:19

标签: algorithm random

我不知道本练习的答案,尤其是为什么他们要参加

n = [log(b - a +1 )] ?!! 

我认为n = ceil(log2(b))


这是练习:

  

描述 RANDOM(a,b)的实现,该实现仅调用 RANDOM(0,1)

和答案:

1: n = [lg(b − a + 1)] 
2: Initialize an array A of length n
3: while true do
4:    for i = 1 to n do
5:       A[i] = RANDOM(0, 1)
6:    end for
7:    if A holds the binary representation of one of the numbers in a through
b     then
8:          return number represented by A
9:    end if
10: end while

页面链接:http://sites.math.rutgers.edu/~ajl213/CLRS/CLRS.html

1 个答案:

答案 0 :(得分:1)

它返回到十进制方法。当您要将数字从(0,1)映射到(a,b)时,只需将数字乘以(b-a),然后再加上a。这意味着如果在x中有一个数字(a,b),我们将有(b-a)*x + a会将0映射到a,并且将1映射到{{1 }}。

由于加号b是所有数字的线性移位,因此在此忽略该移位。因此,最大值是a,并且在b-a的接近集合之间的值数是[a,b]