ArrayList случайно сортируется только 1 раз - C#

Узнай цену своей работы

Формулировка задачи:

Маленькая вводная. Думаю, вы знаете, что в командных соревнованиях команды разбиваются на группы, играют между собой в каждой группе, а победители выходят в след. раунд. Собссна, решил написать "симулятор жеребьевки Лиги чемпионов". Технически - имеем АррайЛист, элементами к-рого являются названия команд в "корзине", случайно сортируем элементы, на выходе получаем состав первых команд групп, потом вторых, и т.д. Но, проблема в том, что АррайЛист сортируется только 1 раз, т.е. группы всегда будут одинаковы по составу, меняется только их порядок (1,2,3,4 при первом вызове функции Майн, 3,1,4,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");
        }
    }
}
П.с. да, я знаю, что строчки 25-32 и 33-51 можно было сократить, вынеся в 2 отдельные функции, принимающие аргументом "корзину", но это щас делать некогда.

Решение задачи: «ArrayList случайно сортируется только 1 раз»

textual
Листинг программы
Random generator = new Random((int)DateTime.Now.Ticks);
int position = generator.Next(0, source.Count);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы