繁体   English   中英

我怎样才能使random.choice返回2个不同的值?

[英]How I can make random.choice return 2 different values?

我在random.choice中使用权重,因此如果在选择后删除该权重,恐怕会弄乱权重。 pop_fit_sorted是使用numpy的数组的数组,百分比是带有权重的数组。

parents_list = random.choices(pop_fit_sorted, weights=percentage, k=2)

那就是我正在使用的代码。 但是有时它可以选择同一阵列两次。 如何始终选择2个不同的数组?

注意关于random.choices()

进行选择之前,相对权重将转换为累积权重。

因此,您可以执行以下操作:

items = {1:0.6, 2:0.3, 3:0.1}
el1 = random.choices(list(items.keys()), weights=list(items.values()), k=1)[0]
items[el1] = 0
el2 = random.choices(list(items.keys()), weights= list(items.values()), k=1)[0]

确保获得2个不同的元素。

或者,如建议的那样,您可以使用numpy.random.choice()

np.random.choice(list(items.keys()), replace=False, size=2, p=list(items.values()))

但是在这种情况下,您需要将权重转换为概率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM