是否有Python的标准函数,根据从0到1的随机数的输入概率输出True或False?
我的意思是:
def decision(probability):
...code goes here...
return ...True or False...
上面的例子如果给出一个输入,比方说,0.7将以70%的概率返回True,而以30%的概率返回false
答案 0 :(得分:62)
import random
def decision(probability):
return random.random() < probability
答案 1 :(得分:4)
如果函数rand
返回0到1之间的数字,您可以像这样定义decision
:
bool decision(float probability)
{
return rand()<probability;
}
假设rand()返回范围[0.0, 1.0)
中的值(因此可以输出0.0,永远不会输出1.0)。
答案 2 :(得分:0)
我用它在python中以概率生成一个随机布尔值:
from random import randint
n=8 # inverse of probability
rand_bool=randint(0,n*n-1)%n==0
所以要扩展它:
def rand_bool(prob):
s=str(prob)
p=s.index('.')
d=10**(len(s)-p)
return randint(0,d*d-1)%d<int(s[p+1:])
我自己想出了这个方法,但是它似乎可以工作。
答案 3 :(得分:-2)
如果您想收集大量数据,我建议您使用地图:
from numpy import random as rn
p = 0.15
data = rn.random(100)
final_data = list(map(lambda x: x < p, data))