Python: случайное изменение в списке (мутация) - PullRequest
0 голосов
/ 22 ноября 2018

Я пишу генетический алгоритм и хочу случайным образом изменить число в списке.

Если бы у меня был список, например:

[1,2,3,4,5]

Как я могу взятьперечислите и измените только одно из чисел на случайные числа, например:

[1,2,7,4,5]

или

[1,3,3,4,5]

Любая помощь будет принята с благодарностью:)

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Использовать random.randint:

l=[1,2,3,4,5]
import random
l[random.randint(0,len(l)-1)]=random.randint(min(l),max(l)-1)

А теперь:

print(l)

Есть (каждый раз, когда по-другому, это только первый раз вывод):

[1, 4, 3, 4, 5]
0 голосов
/ 22 ноября 2018

Используйте random.randint :

import random
temp_list = [1,2,3,4,5]
temp_list[index_of_list] = random.randint(minValue, maxValue)

или вы можете попробовать как:

temp_list[random.randint(0, (len(temp_list))-1)] = random.randint(minValue, maxValue)
0 голосов
/ 22 ноября 2018

Используйте random.randrange и random.randint:

>>> import random
>>> index = random.randrange(len(mylist))
>>> mylist[index] = random.randint(minVal, maxVal)

Редактировать: если вы хотите всегда внести изменения (т.е. никогда не оставлять список без изменений), рассмотрим увеличение элемента на ненулевое значение:

>>> mylist[index] += random.choice([1, -1]) * random.randint(1, maxChange)
...