给定0/1随机生成器,为范围[min,max]创建随机生成器

时间:2016-04-05 14:38:06

标签: random

给定一个随机生成器,它以相同的概率生成0或1,如何创建一个随机生成器$scope.data,它在[min,max]范围内以相同的概率生成一个随机数?

如果使用任意最小值和最大值多次调用此函数,如何优化它以提高时间效率?

2 个答案:

答案 0 :(得分:1)

这是一个python解决方案

import math
import random

def power_two(n):
    return int(math.log(n, 2))

def generate_random(min_, max_):
    p2 = power_two(max_ - min_) + 1
    while True:
        n = 0
        for i in xrange(p2):
            n <<= 1
            if random.randint(0, 1):
                n += 1
        if n <= max_ - min_:
            return n + min_

首先它计算power_two所需的位数,然后逐位生成一个数字,只有当它在0 <= n <= max - min范围内时才返回n + min_

答案 1 :(得分:-2)

我可以澄清一下您要优化的内容吗?这里至少有三层代码: 1:某种应用,调用第2项: 2:int generateRandom(int min,int max),调用第3项: 3:一些生成0或1的随机生成器 你是想让2跑得很快还是让3跑很快?