У меня есть форма, содержащая список и четыре переключателя. Каждый переключатель позволяет добавить определенное количество номеров в список (100, 1000, 10000 и 100 000). Я пытаюсь применить алгоритм Shuffle Fisher-Yates, чтобы гарантировать, что в массиве нет повторяющихся чисел. Я пробовал все, что было предложено в Интернете, и мало что помогает. Когда я запускаю свой код ниже, в списке отображаются только нули, а не числа 1-100, которые перетасовываются. Есть что-то, чего я не хватает или что-то, что я делаю неправильно?Fisher-Yates Shuffle в списке? C# Windows Forms
private void randNumGenerator(int Size)
{
Numbers.Items.Clear();
array = new int[Size];
Shuffle(array);
foreach(int value in array)
{
Numbers.Items.Add(value);
}
}
#endregion
#region Shuffle Algorithm
static Random numGenerator = new Random();
static void Shuffle(int[] array)
{
for (int i = array.Length - 1; i >= 0; i--)
{
int r = numGenerator.Next(0, i);
int temp = array[r];
array[r] = array[i];
array[i] = temp;
}
}
#endregion
'массива = новый INT [размер]; Shuffle (array); 'вы посылаете массив нулей, чтобы перетасовать здесь. результат отображается правильно. попробуйте использовать цикл 'for' для заполнения массива цифрами – ASh