egball Ответов: 2

Как можно сделать случайный массив C#


Привет ребята
У меня есть массив в C#, и как я могу случайным образом заменить члены массива друг на друга?

Что я уже пробовал:

для массива я использую ListBox элемент

inputCount= lstin.Items.Count;
output = UniqueRandom(0, inputCount).ToArray<int>();//Just Make me random Number Without Duplicate
for (int i = 0; i < output.Length; i++)
   { 
       lstout.Items.Add(lstin.Items[output[i]]);
   }

johannesnestler

если этот код предназначен для карточной игры или чего - то подобного, я рекомендую не очень "шуфлить" массив-просто выбирайте предметы (карты) случайным образом и удаляйте их. Никакой перетасовки не требуется - и более безопасно - никто не будет знать порядок перетасовки до того, как вы нарисуете элемент - просто init Random с фактическим временем доступа - если это происходит по сети, то это будет еще более непредсказуемо.

2 Ответов

Рейтинг:
1

CPallini

Ты имеешь в виду шарканье[^]?


Рейтинг:
1

OriginalGriff

Простейшее решение:

private Random shuffle = new Random();
public void Randomise<T>(List<T> input)
    {
    int capacity = input.Count;
    if (capacity> 1)
        {
        for (int i = 0; i < capacity * 3; i++)
            {
            int r1 = shuffle.Next(capacity);
            int r2 = shuffle.Next(capacity);
            T temp = input[r1];
            input[r1] = input[r2];
            input[r2] = temp;
            }
        }
    }


egball

Большое спасибо

OriginalGriff

Всегда пожалуйста!