我在random.choice中使用权重,所以如果在选择后删除该权重,恐怕会弄乱权重。 pop_fit_sorted是使用numpy的数组的数组,百分比是带有权重的数组。
parents_list = random.choices(pop_fit_sorted, weights=percentage, k=2)
那是我正在使用的代码。但是有时它可以选择同一阵列两次。如何始终选择2个不同的数组?
答案 0 :(得分:0)
关于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()))
但是在这种情况下,您需要将权重转换为概率。