Почему изменение длины списка зависит от его исходной длины?
Вот функция из кода:
def mutate():
global rats
n = 0
for i in range(len(rats)):
r = rats[i-n]
if r > max(rats)//4:
rats[i-n] += random.triangular(r-(max(rats) // 4),-(max(rats) // 4),5-max(rats))
else:
del rats[i-n]
n+= 1
clear()
А вот код:
import random
rats = []
WIN = 800
def start_game():
global rats
for i in range(10):
rats.append(random.triangular(0.0,5.0,0.4))
def clear():
global rats
n = 0
for i in range(len(rats)):
r = rats[i-n]
if r < 0:
del rats[i-n]
n+= 1
def more_rats():
global rats
for i in range(len(rats)//2):
rats.append(random.triangular(max(rats)+0.5,min(rats),5-sum(rats)))
clear()
def mutate():
global rats
n = 0
for i in range(len(rats)):
r = rats[i-n]
if r > max(rats)//4:
rats[i-n] += random.triangular(r-(max(rats) // 4),-(max(rats) // 4),5-max(rats))
else:
del rats[i-n]
n+= 1
Почему изменение длины списка rats зависит от его исходной длины?
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Мало данных в вопросе, но предположу: Судя по названию функции,тут моделируется мутация (крыс), в списке rats - важный показатель(размер крысы). Вероятно, идут по всей популяции (по списку), и если особь имеет показатель, больший, чем макс показатель популяции, деленный на 4 (т.е. особь в числе 75% лучших), то она мутирует (rats[i-n] изменяется). Если же меньше, то просто вымирает (del rats[i-n]).