如何在数组中执行选择(即删除元素),这些选择往往是较低的数字。
如果我有一组从最低到最高排序的拟合,我如何使用随机数生成,往往较小的数字随机删除这些元素。
pop_sorted_by_fitness = [1, 4, 10, 330]
我想随机删除其中一个较小的元素,其中大部分时间是1,有时是4,很少10,几乎从不330.我怎样才能实现这种算法。
答案 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]