随机布尔值百分比

rjb*_*bez 4 python random python-2.7

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

我有的是这个:

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

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

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

Mar*_*ers 18

只需返回测试:

def reset(percent=50):
    return random.randrange(100) < percent
Run Code Online (Sandbox Code Playgroud)

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

请注意,您需要使用低于您想要True返回给定百分比的值; 如果percent = 100那时你想要True所有的时间,例如当所有randrange()产生的percent值低于该值时.