Я не знаю, как перетасовывать 2D-массив без дублирующих элементов. Может ли кто-нибудь помочь мне перетасовать 2D-массив?Перемешивание 2D-массива без использования коллекций
Вот то, что я до сих пор:
public class Shuffle2DArray
{
public Shuffle2DArray()
{
}
public static void Main(string[] args)
{
int[,] a = new int[3, 3] { { 1, 2, 3, }, { 6, 7, 8 }, { 11, 12, 13 } };
Shuffle2DArray shuffle = new Shuffle2DArray();
shuffle.getshuffle2D (a);
}
void getshuffle2D(int[,] arr)
{
Random ran = new Random();
for (int i = 0; i < arr.GetLength (0); i++) {
for (int j = 0; j < arr.GetLength (1); j++) {
int m = ran.Next(arr.GetLength (0)-1);
int n = ran.Next(arr.GetLength (1)-1);
int temp = arr[0,j];
arr[i,0] = arr[m,n+1];
arr[m,n] = temp;
Console.Write(arr[i,j]+ "\t");
}
Console.WriteLine();
}
}
}
[Fisher-Yates перетасовка] (https: // эн. wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle) - это простой алгоритм перетасовки. Я предлагаю вам посмотреть на это. – Han
В качестве побочного примечания, возможно, именно так вы помещаете свой код здесь, но вы должны извлечь главный метод из своего тела класса и создать отдельный класс для этого – Icepickle