基于概率的真或假输出

时间:2011-05-04 16:52:09

标签: python scientific-computing

是否有Python的标准函数,根据从0到1的随机数的输入概率输出True或False?

我的意思是:

def decision(probability):
    ...code goes here...
    return ...True or False...

上面的例子如果给出一个输入,比方说,0.7将以70%的概率返回True,而以30%的概率返回false

4 个答案:

答案 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))