我使用numpy.random.rand(1)
生成0-1之间的数字,a
和b
的值会根据数字的变化而变化。如何使x > .5
和x < .5
的概率与a
和b
成比例?因此,如果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
答案 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