У меня есть список private List<HeroStats> allHeroes;
список случайных объектов из другого списка C#
и список private List<Team> allTeams;
После того как я заполнить мой список «allHeroes» с героями, я хочу, чтобы создать команду из 5 случайных героев, используя этот метод:
public Team createTeam()
{
int index=0;
Team t = new Team();
Random rnd = new Random();
int cap = allHeroes.Count;
while (t.count() < 5)
{
index = rnd.Next(0, cap);
t.Add(allHeroes.ElementAt(index));
}
return t;
}
Это создает идеальную команду, но если я хочу, чтобы создать больше команд, он будет генерировать ту же команду снова и снова.
Я также есть метод
public List<HeroStats> print()
{
StringBuilder sb = new StringBuilder();
List<HeroStats> l = new List<HeroStats>();
foreach (HeroStats h in team)
{
sb.AppendLine(h.HeroName);
l.Add(h);
}
Console.WriteLine(sb.ToString());
return l;
}
Что необходимо распечатать имя героев в команде.
Почему я получаю ту же команду, если создаю много?
Чтобы создать несколько команд я использую:
Team a = new Team();
for (int i = 0; i < 2000; i++)
{
a = createTeam();
allTeams.Add(a);
}
Вы должны объявить свое случайное статически на уровне класса. –
Кроме того, 'cap' является [эксклюзивным максимумом] (http://www.dotnetperls.com/random), поэтому вы должны установить его на allHeroes.Count + 1 –
Или просто дать классу Random класс: public Random a = new Random (DateTime.Now.Ticks.GetHashCode()); – SeraphimFoA