在for循环中运行函数

时间:2013-02-18 13:03:20

标签: java function random

我想多次运行我的功能并获得不同的答案(因为它处理随机数),并从所有可能的答案中获得最小值。但该函数始终返回相同的值。如何更正循环以获得每次不同的答案并找到最小值? 这是我的代码

    int n = 0;
    KargerMinimumCut karger = new KargerMinimumCut();
    ArrayList<Integer> answers = new ArrayList<Integer>();
    for(int i = 0; i < 10; i++) {
        n = karger.minCut(vertices);
        answers.add(n);
    }
    int min = minimum(answers);
    System.out.println("Minimum Number is: " + min);

和最小功能

public static int minimum(ArrayList<Integer> array) {
    int min = array.get(0);
    for(int i = 1; i < array.size(); i++) {
        if(array.get(i) < min)
            min = array.get(i);
    }
    return min;
}

1 个答案:

答案 0 :(得分:1)

编辑:

看到你的算法后,你需要这样做。 (顺便说一下,我本来只使用了一个简单的整数2D数组。)

int min = Integer.MAX_VALUE;
KargerMinimumCut karger = new KargerMinimumCut();
for(int i = 0; i < 10; i++) {
    int cut = karger.minCut(copyOfVertices(vertices));
    System.err.println(cut);
    min = Math.min(min,cut);
}
System.out.println("Minimum Number is: " + min);

public ArrayList<ArrayList<Integer>> copyOfVertices(ArrayList<ArrayList<Integer>> vertices) {
  ArrayList<ArrayList<Integer>> copy = new ArrayList<ArrayList<Integer>>();
  int size = vertices.size();
  for (int i=0; i<size; i++) {
    int innerSize = vertices.get(i).size();
    ArrayList<Integer> row = new ArrayList<Integer>();
    for (int j=0; j<innerSize; j++) {
      row.add(new Integer(vertices.get(i).get(j)));
    }
    copy.add(row);
  }
  return copy;
}