Java 2D数组 - 输入值

时间:2013-01-14 16:20:42

标签: java arrays matrix multidimensional-array

我为TSP实现了两种算法,它使用的是一个包含路由,它们的成本等的类。此时它使用的随机值很好,虽然我现在需要比较算法以便使这个公平我需要使输入相同(这在使用随机输入时显然不太可能发生!)我遇到的问题是我不知道如何将它从随机值更改为将预定值插入到2D数组中,而不仅仅是也不知道如何计算这些价值的成本。


随机生成节点值:

Random rand = new Random();
            for (int i=0; i<nodes; i++) {
                for (int j=i; j<nodes; j++) {
                    if (i == j)
                        Matrix[i][j] = 0;
                    else {
                        Matrix[i][j] = rand.nextInt(max_distance);
                        Matrix[j][i] = Matrix[i][j];
                    }
                }
            }

我假设上面声明了一个说[4] [4]的矩阵,然后是int matrix [] [] = 插入值

我对本课程的其他部分没有帮助,但我认为在问之前我需要确保这部分是正确的!

提前多多感谢!

2 个答案:

答案 0 :(得分:2)

您可以为每个随机数生成器设置种子,因此保证对于您测试的每个实现,都会创建相同的伪随机数序列。

这将节省手动输入大量值的工作量。

编辑以显示种子方法:

Random r = new Random(56);

每次使用56的种子创建r时,它将产生完全相同的随机数序列。没有种子我相信种子默认为系统时间(给出真正随机数字的错觉)。

答案 1 :(得分:2)

你可以像这样初始化2D数组:

    double matrix[][] = { { v1, v2, ..., vn }, { x1, x2, ..., xn }, ..., { y1, y2, ..., yn } };

其中每个内部{}表示outter(第一个)索引,每个内部元素表示最内部(第二个)intex。

示例:对于访问元素x1,您执行此操作:

    matrix[1][0];

这是你要求的答案,但我仍然认为最好对两种算法使用相同的随机值集合,Jon Taylor表明了这样做的好方法。设置种子的代码如下所示:

    int seed = INTEGER_VALUE;
    Random rand = new Random(seed);
通过这种方式,您将获得相同的值集。