在python

时间:2015-07-17 16:42:38

标签: python numpy probability

我使用numpy.random.rand(1)生成0-1之间的数字,ab的值会根据数字的变化而变化。如何使x > .5x < .5的概率与ab成比例?因此,如果a为75且b为15,那么x > .5的概率可能比x <1小5倍。 0.5。我不确定用于分配概率的代码。这就是我所拥有的:

a = 100
b = 100
while True:
    x = numpy.random.rand(1)            
    print x
    if x < .5:                         
        a = a + 10                     
        b = b - 10                     
        print a
        print b
    if x > .5:                         
        b = b + 10                   
        a = a - 10                     
        print a
        print b
    if b1 == 0:                         
        print a 
        break                         
    if b2 == 0:                         
        print b 
        break 

3 个答案:

答案 0 :(得分:0)

在这种情况下,我会numpy生成1到100之间的数字,然后根据它进行分配。即(pusdocode)

if rand(100) => 50: a=0 
else: a=1 

然后你所要做的就是将50改为你想要的百分比。如果这令人困惑,我可以进一步详细说明。

def get_rand_value(a, b):
    if rand(100) => a:
        return True
    else:
        return 1
a = 100
b = 100 

while True:
    x = get_rand_value(a, b)
    print x
    if x < .5:                         
        a = a + 10                     
        b = b - 10                     
        print a
        print b
    if x > .5:                         
        b = b + 10                   
        a = a - 10                     
        print a
        print b
    if b1 == 0:                         
        print a 
        break                         
    if b2 == 0:                         
        print b 
        break 

答案 1 :(得分:0)

我拨打两个随机电话:一个用于计算0到0.5之间的随机数,另一个用于确定该数字是否应该高于0.5。

例如;

a = 100
b = 100
x = numpy.random.rand(1)/2.0

proportion = a/(1.0*b+a)
if numpy.random.rand(1) > proportion:
    x += 0.5

答案 2 :(得分:0)

多么合适的名字。

ratio = a/b

x = numpy.random.uniform(0.5 + ratio*0.5)

现在你的数字分布在0和比率乘以0.5之间。在均匀分布的情况下,数字总数大于0.5和人口数低于0.5之间的比率是所需比率。

现在我们只需将这些范围广播在0.5到1.0之间。

if x >= 0.5:
    x = x - math.trunc(x) 
    if int(str(number-int(x))[1:]) < 5:
        x += 0.5