从Main获取随机函数

时间:2012-08-07 07:15:42

标签: java function main

public static GetRandomFunc() {
    switch((int)(Math.random()*NUM_FUNCTIONS)  {
        case 0:
            functionA();
            break;
        case 1:
            functionB();
            break;
        case 2:
            functionC();
            break;
          //  ...
    }
}

我想在main中随机调用GetRandomFunc(),直到每个函数被调用一次然后结束。如何确保只调用一次函数,如果调用了所有函数,则打印出System.out.println(“All done”)

3 个答案:

答案 0 :(得分:5)

创建一个包含0,1和2的列表。对其进行洗牌并迭代它以按随机顺序调用每个函数一次。

List<Integer> integers = Arrays.asList(0,1,2);
Collections.shuffle(integers)
for (Integer i: integers){
   GetRandomFunc(i)
}

,您的功能将是

public static GetRandomFunc(int index) {
    switch(index)  {
        case 0:
            functionA();
            break;
        case 1:
            functionB();
            break;
        case 2:
            functionC();
            break;
          //  ...
    }
}

答案 1 :(得分:3)

列出功能并随机取出。当它为空时,您可以确定您只使用了一次所有功能。

public interface Function { void execute(); }

public static runFunctionsRandomly(List<Function> functions) {
  while (!functions.isEmpty()) {
      int index = Math.random() * functions.size();
      Function f = functions.get(index);
      f.execute();
      functions.remove(index);
  }
}

class ExampleFunction implements Function {
  void execute() {
    System.out.println("Hello world!");
  }
}
...

答案 2 :(得分:3)

使用Runnable的列表(或整数映射到每个函数,就像在代码中一样),对其进行随机播放,然后遍历列表并调用每个函数。

http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle%28java.util.List%29