我尝试在Java中创建一个“二维”数组,用介于1到6之间的随机数(编辑:我的意思是0到5,因为代码当前如此 - 抱歉)填充它自己。然而,我希望这些数字能够在一条最佳拟合线上“镜像”,就像处理图表数据一样。例如,如果指数[1] [4]处的数字为3.0,则我希望[4] [1]处的数字也为3.0。目前我有处理这个的代码片段,代码中另一个位置已经确定了数组长度为6:
Random random = new Random();
int n = array.length;
double [][] populationArray = new double [n][n];
for (int i=0; i<populationArray.length; i++){
for (int j=0; j<populationArray[i].length; j++) {
populationArray[i][j] = random.nextInt(6);
if (populationArray[i][j] != 0) {
populationArray[j][i] = populationArray[i][j];
}
}
}
for (double[] p : populationArray) {
System.out.println(Arrays.toString(p));
}
目前,这将打印为:
[0.0, 1.0, 2.0, 1.0, 5.0, 2.0]
[1.0, 3.0, 5.0, 1.0, 3.0, 1.0]
[2.0, 5.0, 4.0, 1.0, 4.0, 1.0]
[1.0, 1.0, 1.0, 4.0, 2.0, 2.0]
[5.0, 3.0, 0.0, 2.0, 4.0, 4.0]
[2.0, 1.0, 0.0, 0.0, 4.0, 1.0]
正如您所看到的,一些数字反映出来了,而一些则没有(我怀疑那些反映出来的纯粹是运气),我对此的逻辑感到困惑。如果您有任何建议,我将不胜感激-如果这个问题已经在其他地方得到解答,我也可以接受链接,因为我自己找不到。
谢谢。
if(populationArray[i][j] != 0)
看起来是你的问题。它基本上是随机反映还是不反映。此外,您正在用随机数覆盖先前反射的值。 - Luke Briggs