對於一些課程我需要通過蠻力生成一個正常的魔方,這是代碼的一部分。僅供參考;我不允許使用除了常用的以外的任何類別。 (我可能推我的運氣Math.Pow)在調試期間工作,運行時失敗?
我有以下的方法來生成一個二維尺寸N×N個:
static int[,] GenerateSquare(int n)
{
int[,] sqarray = new int[n,n];
int[] rndarray = new int[n];
//puts completely random integers from 1 to n^2 in all elements of the square array (sqarray)
for (int i = 0; i < n; i++)
{
rndarray = FullRndArray(n);
for (int j = 0; j < n; j++)
{
sqarray[i, j] = rndarray[j];
}
}
return sqarray;
}
的FullRndArray()方法如下:
static int[] FullRndArray(int n)
{
//creates an array of size n and fills with random intigers between 1 and n^2
int[] rndarray = new int[n];
Random rnd = new Random();
int ntothe2 = Convert.ToInt32(Math.Pow(n, 2));
for (int i = 0; i < n; i++)
rndarray[i] = rnd.Next(1, ntothe2 + 1);
return rndarray;
}
問題是,當我運行這個代碼時,每行的內容是隨機的,但每一行的正方形與最後一行相同(即1-1,1-2,1-3是相同的2-1,2-2,2-3,分別與3-1,3-2,3-3相同)。然而,當我逐行通過調試器時,我最終會在每個空間中產生一組完美的隨機數字。任何人都可以向我解釋這個錯誤嗎?
只需使用'n * n'即可消除'Math.Pow'。一般來說,除非要四捨五入,否則可以使用'(int)'而不是'Convert.Int32'。 – Gabe