随意选择一些东西,有一定的偏见(不使用numpy)

时间:2018-03-23 09:51:02

标签: python function

我想开发一个从人口中随机选择一块电路板的功能"但是我希望它偏向于适应值较低的电路板。

# population = [(fitness, board),...] # population is a heapq in my program


def random_selection(population):        
    random_index = randint(0, len(population) - 1)
    return population[random_index][1] 

例如,(1,板),(7,板)。我希望第一块板具有较高的被选择概率,因为它具有较低的值。

我该怎么做?我在考虑使用random()并创建接受概率阈值。

此外,是否可以跟踪到目前为止我选择的电路板?对于我的情况,heapq中的board是唯一的。

1 个答案:

答案 0 :(得分:0)

如果您有权访问numpy,则numpy.random.choice()具有您想要的功能。

来自文档:

#Generate a non-uniform random sample from np.arange(5) of size 3:

>>> np.random.choice(5, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([3, 3, 0])

您只需要为人口中的每个元素构建权重p,以定义选择1的可能性多于7。