随机布尔值百分比

时间:2013-01-14 18:38:19

标签: python random python-2.7

我正在尝试获得一个随机布尔值,但加权百分比。例如,我希望用户传入百分比(即60),并且生成器将在60%的时间内随机选择真实。

我拥有的是:

def reset(percent=50):
    prob = random.randrange(0,100)
    if prob > percent:
        return True
    else:
        return False

有更好的方法吗?这似乎效率低下且繁琐。我不需要它是完美的,因为它只是用于模拟数据,但我需要尽可能快。

我搜索过(Google / SO)并且没有找到任何其他问题。

3 个答案:

答案 0 :(得分:17)

只需返回测试:

def reset(percent=50):
    return random.randrange(100) < percent

因为<低于运算符的结果已经是布尔值。您也不需要给出起始值。

如果您希望在给定百分比内返回True,则需要使用低于;如果percent = 100,则您始终需要True,例如当randrange()生成的所有值都低于percent值时。

答案 1 :(得分:1)

怎么样:

def reset(percent=50):
    return random.randrange(0, 100) > percent

答案 2 :(得分:1)

@rjbez您要求一个函数在 X 的时间内返回 true 。当X == 0%时,它应该总是返回false。当X == 100%时,它应该总是返回true。目前接受的答案现已修复并具有适当的关系

def reset(percent=50):
    return random.randrange(100) < percent