随机选择负权重

时间:2014-10-09 07:48:31

标签: python random

在我的python程序中,我有三个变量abc。它们都是浮点数,可能是正数或负数,没有上限和下限。

我如何设计一个将这些变量作为权重并随机选择相应操作的函数(AB& C)?

示例

a = 10
b = -2
c = 7

该功能大部分时间应执行A,有时会C,而B最少。{/ p>

加权随机函数'我发现在这个网站上没有处理负重量。

4 个答案:

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

上返回一些东西