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”)
答案 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