[英]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.