给定一个随机生成器,它以相同的概率生成0或1,如何创建一个随机生成器$scope.data
,它在[min,max]范围内以相同的概率生成一个随机数?
如果使用任意最小值和最大值多次调用此函数,如何优化它以提高时间效率?
答案 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跑很快?