蟒蛇遗传算法"Natural"选择



我如何在趋向较低数字的数组中执行选择(即删除元素的删除)。

如果我有一系列的健身,最高到最高,我该如何使用趋向较小数字的随机数来随机删除这些元素。

pop_sorted_by_fitness = [1, 4, 10, 330]

我想随机删除其中一个较小的元素之一,其中大部分时间1,有时是4,很少有10,几乎从未有330个。我如何实现这种算法。

如何使用指数分布使用numpy.random.pendential

对索引进行采样
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]

最新更新