gpt4 book ai didi

java - “镜像”二维数组 [Java]

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:51:06 25 4
gpt4 key购买 nike

我正在尝试在 Java 中制作“二维”数组,它用 1 到 6 之间的随机数填充自身(编辑:我的意思是 0 和 5,正如代码当前所做的那样 - 我很抱歉)。但是,我希望这些数字在假想的最佳拟合线上“镜像”,就像处理图表一样。例如,如果索引 [1][4] 处的数字是 3.0,我希望 [4][1] 处的数字也为 3.0。我目前拥有的处理此问题的代码片段如下所示(我在代码的另一点将 array.length 设置为 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]

如您所见,有些数字反射(reflect)了情况,有些则没有(我怀疑反射(reflect)情况的数字纯粹是运气不好),我正在努力解决这个问题的逻辑。我将不胜感激任何建议 - 如果这个问题已在其他地方得到解决,我也会获取一个链接,因为我自己找不到它。

谢谢。

最佳答案

因为 if(populationArray[i][j] != 0)只有不为 0 的值才会被镜像。如果您删除 if 语句,代码将起作用。

另外,random.nextInt(6) 将生成一个介于 0(含)和 6(不含)之间的整数,因此将生成 0、1、2、3、4 或 5。

因此要生成数字 1-5(含),您必须执行 random.nextInt(5)+1

所以for循环会变成:

for (int i=0; i<populationArray.length; i++){
for (int j=0; j<populationArray[i].length; j++) {
populationArray[i][j] = random.nextInt(5)+1;
populationArray[j][i] = populationArray[i][j];
}
}

不过,我想指出的是,所有位置都被赋予了两次随机值。对于创建单个 6x6 阵列,差异不会很明显。但是,如果您打算创建更大/更多的数组,我建议您优化您的代码,以避免为数组中的每个点赋值两次。

您可以通过更改 j<populationArray[i].length 来优化它至 j<=i :

for (int i=0; i<populationArray.length; i++){
for (int j=0; j<=i; j++) {
populationArray[i][j] = random.nextInt(5)+1;
populationArray[j][i] = populationArray[i][j];
}
}

关于java - “镜像”二维数组 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42351282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com