Вы ничего не упомянули в требовании, чтобы строки были случайными, просто чтобы их нельзя было дублировать;
Как насчет того, чтобы последний номер каждой строки стал первым номером в следующей строке.
Так что вы можете сделать список или массив
1 2 3 4 5 6 7 8 9
Первая строка матрицы - это массив в текущем порядке.
Следующая итерация, возьмите 9 и вставьте в начало, и ваша вторая строка матрицы будет выглядеть так:
9 1 2 3 4 5 6 7 8
Сделайте это 9 раз, и у вас не будет повторяющихся строк. Это основано на алгоритме круговой игры, который немного сложнее, но используется для планирования спортивных игр, поэтому команды никогда не играют в одной команде дважды до того, как сыграли все команды в лиге.
Можете ли вы построить c # из этого объяснения?