令n=b−a,c=⌈lgn⌉
1. 运行c次RANDOM(0,1),将生成的序列视为输出数m的二进制表示
2. 若m大于n,则重复1,否则输出m+a
m小于n的概率为
p=n/2c,则期望E=2c/n
故
T=O(Ec)=O(c2c/n)=O(lg(b−a))
令n=b−a,c=⌈lgn⌉
1. 运行c次RANDOM(0,1),将生成的序列视为输出数m的二进制表示
2. 若m大于n,则重复1,否则输出m+a
m小于n的概率为
p=n/2c,则期望E=2c/n
故
T=O(Ec)=O(c2c/n)=O(lg(b−a))