在我的python程序中,我有三个变量a
,b
和c
。它们都是浮点数,可能是正数或负数,没有上限和下限。
我如何设计一个将这些变量作为权重并随机选择相应操作的函数(A
,B
& C
)?
示例:
a = 10
b = -2
c = 7
该功能大部分时间应执行A
,有时会C
,而B
最少。{/ p>
加权随机函数'我发现在这个网站上没有处理负重量。
答案 0 :(得分:1)
weights = [10, -2, 7]
offset = min(weights)
positiveweights = [z - offset + 1 for z in weights]
现在您可以使用任何需要正权重的加权随机函数。
答案 1 :(得分:0)
嗯,一个简单的方法是假设变量的值来自正态分布,mean
等于最大值(*)和任意标准差(例如sd=1
)。
然后,您需要做的只是找到查看特定值的概率,例如-2
,可以通过概率分布函数( pdf )来解决。然后你可以将概率用作权重。
这种方法的好处在于你也可以有负值。
解决方案:
import scipy.stats
variables = [10, -2, 7]
maximum = max(variables)
probabilities = scipy.stats.norm(maximum, 1).pdf([variables])
<强>结果:强> 数组([[3.98942280e-01,2.14638374e-32,4.43184841e-03]])
其余的,你可以弄清楚自己。
(*)将mean
设置为最大值的原因是为了获得最大概率(权重)。
答案 2 :(得分:-2)
只是我的想法,如果你总和权重怎么办?你得到19 + 4(B阳性为2,差异为4)+ 7 = 30。
chanceA = 19 / 30 = 63%
chanceB = 2 / 30 = 6%
chanceC = 7 / 30 = 23%
如果你总结过程,你不会获得100%但是,它可能会有效:)
答案 3 :(得分:-3)
您可以将负数转换为数字。到[0; 1]段中的数字。像那样
def chance(a):
if a>0:
return a
else:
return 1/abs(a)
你也应该在0
上返回一些东西