Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java2D数组-输入值_Java_Arrays_Matrix_Multidimensional Array - Fatal编程技术网

Java2D数组-输入值

Java2D数组-输入值,java,arrays,matrix,multidimensional-array,Java,Arrays,Matrix,Multidimensional Array,我为TSP实现了2个算法,其中使用了一个类,包括路线、成本等。目前它使用的是随机值,这很好,尽管我现在需要比较算法,因此为了公平起见,我需要使输入相同(使用随机输入时,这显然不太可能发生!)我遇到的问题是我不知道如何将其从随机值更改为在2D数组中插入预先确定的值,不仅如此,我还不知道如何计算这些值的成本 随机生成节点值: Random rand = new Random(); for (int i=0; i<nodes; i++) {

我为TSP实现了2个算法,其中使用了一个类,包括路线、成本等。目前它使用的是随机值,这很好,尽管我现在需要比较算法,因此为了公平起见,我需要使输入相同(使用随机输入时,这显然不太可能发生!)我遇到的问题是我不知道如何将其从随机值更改为在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];
                    }
                }
            }
Random rand=new Random();

对于(int i=0;i,您可以为每个随机数生成器设置一个种子,从而确保为您测试的每个实现创建相同的伪随机数序列

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

编辑以显示种子方法:

Random r = new Random(56);

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

您可以为每个随机数生成器设置一个种子,从而确保为您测试的每个实现创建相同的伪随机数序列

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

编辑以显示种子方法:

Random r = new Random(56);

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

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

    double matrix[][] = { { v1, v2, ..., vn }, { x1, x2, ..., xn }, ..., { y1, y2, ..., yn } };
    int seed = INTEGER_VALUE;
    Random rand = new Random(seed);
其中,每个内部{}表示outter(第一个)索引,每个内部元素表示最内部(第二个)intex

示例:要访问元素x1,请执行以下操作:

    matrix[1][0];
这是您要求的答案,但我仍然认为最好对两种算法使用相同的随机值集,Jon Taylor展示了一种很好的方法。设置种子的代码如下所示:

    double matrix[][] = { { v1, v2, ..., vn }, { x1, x2, ..., xn }, ..., { y1, y2, ..., yn } };
    int seed = INTEGER_VALUE;
    Random rand = new Random(seed);

这样,您将获得相同的值集。

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

    double matrix[][] = { { v1, v2, ..., vn }, { x1, x2, ..., xn }, ..., { y1, y2, ..., yn } };
    int seed = INTEGER_VALUE;
    Random rand = new Random(seed);
其中,每个内部{}表示outter(第一个)索引,每个内部元素表示最内部(第二个)intex

示例:要访问元素x1,请执行以下操作:

    matrix[1][0];
这是您要求的答案,但我仍然认为最好对两种算法使用相同的随机值集,Jon Taylor展示了一种很好的方法。设置种子的代码如下所示:

    double matrix[][] = { { v1, v2, ..., vn }, { x1, x2, ..., xn }, ..., { y1, y2, ..., yn } };
    int seed = INTEGER_VALUE;
    Random rand = new Random(seed);

这样,您将获得相同的值集。

为什么不继续使用随机值,但在每次运行中两种算法的值相同?以防万一,您对手动初始化2D数组感兴趣:为什么不继续使用随机值,但在每次运行中两种算法的值相同?以防万一,您对手动初始化2D数组:非常感谢,我想我在开始之前试过的时候实现的是正确的。代码中也提到了矩阵的其他一些实例,但我不确定是否需要更改?不断地找出矩阵之间的差异似乎也很复杂矩阵中的值,你同意吗?好吧,让我完全理解你想问的问题,为什么你需要改变矩阵的引用?比如,如果你用参考变量matrix1来改变矩阵的任何值,如果它们引用的是我认为是d的同一个对象,那么用另一个参考变量matrix2,所有的改变都是完全相等的在你的情况下是这样的。如果这不是答案,请说清楚。当你谈论两个矩阵之间的差异或同一个矩阵中的差异时?非常感谢,我认为我在开始之前尝试时正确地实现了它。我也有代码中提到的矩阵的其他一些实例,但我不确定是什么原因她说,它需要改变?不断地找出矩阵中的值之间的差异似乎也很复杂,你同意吗?好吧,让我完全理解你想问的问题,为什么你需要改变矩阵的引用?比如,如果你用引用变量matrix1改变矩阵的任何值,所有的改变都会被忽略使用另一个参考变量matrix2完全相等,如果它们引用的对象与我认为在您的情况下相同。如果这不是答案,请澄清。当您谈论两个矩阵之间的差异或同一矩阵中的差异时?感谢您的回答,我如何设置种子?这是我以前从未听说过的事情谢谢你的回答,我该如何着手播种呢?这是我以前从未听说过的事情,但如果它能节省时间和精力,我将不胜感激!谢谢你