Python遗传算法"自然"选择

时间:2017-09-21 06:46:05

标签: python

如何在数组中执行选择(即删除元素),这些选择往往是较低的数字。

如果我有一组从最低到最高排序的拟合,我如何使用随机数生成,往往较小的数字随机删除这些元素。

pop_sorted_by_fitness = [1, 4, 10, 330]

我想随机删除其中一个较小的元素,其中大部分时间是1,有时是4,很少10,几乎从不330.我怎样才能实现这种算法。

1 个答案:

答案 0 :(得分:2)

如何使用指数分布来使用numpy.random.exponential

对索引进行采样
import numpy as np 

s = [1, 4, 10, 330] 
limit = len(s)
scale = 10**int(np.log10(limit))
index = int(np.random.exponential()*scale)%limit

测试

In [37]: sorted([int(np.random.exponential()*scale)%limit for _ in xrange(20)]) 
Out[37]: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 3, 3]