2017-09-21 40 views
0

如何執行選擇(即刪除元素)在數組中傾向於更低的數字。Python遺傳算法「自然」選擇

如果我有一個從最低到最高排序的適合度數組,我該如何使用趨向於較小數字的隨機數生成來隨機刪除這些元素。

pop_sorted_by_fitness = [1, 4, 10, 330] 

我想隨機刪除那些更小的元素之一,它的大部分時間1,有時4,很少10,幾乎從來沒有330我怎樣才能實現這種算法。

+0

的[如何模擬在python偏模?]可能的複製(HTTPS:/ /stackoverflow.com/questions/479236/how-do-i-simulate-biased-die-in-python) – SiHa

+0

這有點偏向於「適者生存」,但仍然使用RNG來選擇數組索引。 – Zavax

+0

是的,對不起,評論有點sn。。不過,搜索* Python偏向隨機*會產生不少點擊。 – SiHa

回答

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]