微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:如何从加权列表中将变量设置为随机值?

如何解决Python:如何从加权列表中将变量设置为随机值?

我对编码还很陌生,因此无法找到上述问题的答案。这是我所拥有的:


E0 = 1
rho = 0.8

def sigma():
    numberlist = [0.5,0.2,0.14,0.07]
    sigmanew = randomchoices(numberlist,weights=(5,15,30,50),k=1)
    return sigmanew

def deriv(y,t,sigma,rho)
    E = y
    dEdt = sigma * (1 - rho) * E
    return dEdt

t = np.linspace(0,250,61)
y0 = E0

ret = odeint(deriv,y0,args=(N,rho))
E = ret.T

我希望每次基于这些权重运行代码时,将sigma的值设置为新值,但这似乎不起作用。我知道我可以在这个范围内调用random.uniform,但是值是加权的这一事实很重要。 我该怎么做?

解决方法

鉴于您要生成一个数字,假设您可以使用1到10之间的代码

$members[0]['bestOpponentAttack']

第一个值1是最小,第二个值10是最大。

,

numpy.random.choicep参数一起使用:

def sigma():
    numberlist = [0.5,0.2,0.14,0.07]
    weights = np.array([5,15,30,50])
    weights = weights/weights.sum()
    sigmanew = np.random.choice(numberlist,1,p=weights)
    return sigmanew[0]

您可以看到使用np.unique对值进行了相应的加权:

np.unique([sigma() for _ in range(100)],return_counts=True)

输出:

(array([0.07,0.5 ]),array([48,28,17,7],dtype=int64))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。