如果您的RANDOM(0,1)返回0或1,每个返回的概率为0.5,那么您可以生成位,直到您有足够的二进制数来表示数字(b-a +
1)。这会给您一个随机数,但范围会稍大一些:如果失败,您可以测试并重复。像这样(在Python中)。
def rand_pow2(bit_count): """Return a random number with the given number of bits.""" result = 0 for i in xrange(bit_count): result = 2 * result + RANDOM(0, 1) return resultdef random_range(a, b): """Return a random integer in the closed interval [a, b].""" bit_count = math.ceil(math.log2(b - a + 1)) while True: r = rand_pow2(bit_count) if a + r <= b: return a + r
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)