ArrayList случайно сортируется только 1 раз - C#
Формулировка задачи:
Маленькая вводная. Думаю, вы знаете, что в командных соревнованиях команды разбиваются на группы, играют между собой в каждой группе, а победители выходят в след. раунд.
Собссна, решил написать "симулятор жеребьевки Лиги чемпионов". Технически - имеем АррайЛист, элементами к-рого являются названия команд в "корзине", случайно сортируем элементы, на выходе получаем состав первых команд групп, потом вторых, и т.д.
Но, проблема в том, что АррайЛист сортируется только 1 раз, т.е. группы всегда будут одинаковы по составу, меняется только их порядок (1,2,3,4 при первом вызове функции Майн, 3,1,4,2 - при втором, и т.д.).
Собственно, как сделать сортироку АррайЛиста (расположение эл-тов с случайном порядке) каждый раз разной?
П.с. да, я знаю, что строчки 25-32 и 33-51 можно было сократить, вынеся в 2 отдельные функции, принимающие аргументом "корзину", но это щас делать некогда.
using System; using System.Collections; using System.Collections.Generic; public class Program { private ArrayList ShuffleArrayList(ArrayList source) { ArrayList sortedList = new ArrayList(); Random generator = new Random(); while (source.Count > 0) { int position = generator.Next(source.Count); sortedList.Add(source[position]); source.RemoveAt(position); } return sortedList; } public void Main() { var pot1 = new List<string> { "Club Atletico de Madrid", "Bayern Munich", "FC Dynamo Kyiv", "Real Madrid CF", "FC Barcelona", "Juventus", "Liverpool FC", "Chelsea FC" }; var pot2 = new List<string> { "FC Shakhtar Donetsk", "Celtic Glasgow", "Olympiakos CFP", "AS Roma", "Manchester City FC", "PFC CSKA Moskva", "Fenerbahce SK", "Dnipro Dnipropetrovsk" }; var pot3 = new List<string> { "BVB Borussia Dortmund", "FC Schalke 04", "FC Zenit St. Petersburg", "PSG", "HB Torshavn", "AIK", "Aalborg BK", "FC Sutjeska Niksic" }; var pot4 = new List<string> { "Lokomotiv Moskva", "Athletic Bilbao", "FC Lovcen Cetinje", "Malmo FF", "FC Aktobe", "PFC Ludogorets Razgrad", "Stromgodset IF", "FC Banants Yerevan" }; ArrayList arr1 = new ArrayList(pot1); arr1 = ShuffleArrayList(arr1); ArrayList arr2 = new ArrayList(pot2); arr2 = ShuffleArrayList(arr2); ArrayList arr3 = new ArrayList(pot3); arr3 = ShuffleArrayList(arr3); ArrayList arr4 = new ArrayList(pot4); arr4 = ShuffleArrayList(arr4); for(int i=0;i<arr1.Count;i++) { Console.Write(arr1[i]+"\t\t\t"); } Console.WriteLine(); for(int i=0;i<arr2.Count;i++) { Console.Write(arr2[i]+"\t\t\t"); } Console.WriteLine(); for(int i=0;i<arr3.Count;i++) { Console.Write(arr3[i]+"\t\t"); } Console.WriteLine(); for(int i=0;i<arr4.Count;i++) { Console.Write(arr4[i]+"\t\t\t"); } } }
Решение задачи: «ArrayList случайно сортируется только 1 раз»
textual
Листинг программы
Random generator = new Random((int)DateTime.Now.Ticks); int position = generator.Next(0, source.Count);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д