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);