Я хочу заменить элемент «Мутате» из списка, взяв другой случайный элемент из другого списка.замена элемента в списке C#
private int elitism = 20;
private int population = 1;
private int chance = 100;
private Random rand = new Random();
private List<HeroStats> allHeroes = new List<HeroStats>();
private List<Team> allTeams = new List<Team>();
Если я создаю команду и мутировать, он должен заменить 1 случайный элемент из этой текущей команды, но если я использую YHE Mutation
метод, замена не происходит; Я получаю ту же команду
public void Mutation()
{
// compute how many individuals will 100% survive
int goodResults= population * elitism/100;
int index;
int position;
HeroStats old_hero, new_hero;
Team new_team;
for (int i = goodResults; i < allTeams.Count(); i++)
{
if (rand.Next(0, 100) < chance)
{
new_team = allTeams.ElementAt(i);
index = allTeams.IndexOf(new_team);
// select random hero within the team , a team having 5 heros
position = rand.Next(0, 4);
//RetrieveHero(int x) is a method which returns the hero from position x within a team
old_hero = new_team.RetrieveHero(position);
// get a new hero from the hero-list
new_hero = allHeroes.ElementAt(rand.Next(0, 101));
// associate the new value to the genome
new_team.Remove(old_hero);
new_team.Add(new_hero);
allTeams[index] = new_team;
}
}
}
В качестве примера: рассмотрим команды а = [1 2 3 4 5]
После team a
претерпевает мутацию, она могла бы выглядеть следующим образом
команды а = [1, 2, 3, 4, R] или команда a = [1, P, 3, 4, 5] или команда a = [1, 2, 3, 99, 5]
Почему мой код ведет себя так странно?
Каков ожидаемый результат или что вы получаете, что заставляет его действовать так странно? – dbarnes
Что именно это делает, заставляет вас думать, что это действует странно? – omni
Я протестировал его, создав только 1 команду, распечатав ее, используя метод в этой команде и снова напечатав новую команду, ничего не меняет –