这是我的第一个问题,对于任何错误都很抱歉。
如何进行第二次循环以生成唯一的行?
每当我添加第二个循环以找到唯一的解决方案程序挂起...
static void Main(string[] args)
{
int[,] tab = new int[9, 9];
Random r = new Random();
List<int> temp = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for(int i = 0; i < 9; i++)
{
for(int j = 0; j < 9; j++)
{
while (true)
{
bool uniq = true;
int randomNumber = r.Next(0, 9);
for (int z = 0; z < i; z++)
{
if (randomNumber==tab[z,j])
{
uniq = false;
}
}
if (uniq == false)
{
continue;
}
tab[i, j] = randomNumber;
temp.Remove(randomNumber);
break;
}
答案 0 :(得分:0)
试试这个:
private Random r = new Random();
void Main()
{
int[,] tab = new int[9, 9];
List<int> digits = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for (int i = 0; i < 9; i++)
{
List<int> temp = digits.OrderBy(x => r.Next()).ToList();
for (int j = 0; j < 9; j++)
{
tab[i, j] = temp[j];
}
}
}