请稍侯

调用Random(0,1)实现Random(a,b)

16 February 2015

题目描述

如何在只调用RANDOM(0,1)来实现RANDOM(a, b)

步骤

  1. n = b - a
  2. 找到最小的c 使2^c ≥ n (c = ⌈lgn⌉)
  3. 调用RANDOM(0, 1)函数c次,生成的0,1序列构成一个二进制数r
  4. 如果r大于n重新开始第3步
  5. 否则返回a+r即可