java - 以随机唯一顺序调用方法?

标签 java random unique method-call

因此,我希望随机化某些方法的调用方式,以便每个实例仅调用一次每个方法,并且调用每个方法。

所以说一个实例,它们按顺序被调用:

方法2 方法4 方法3 方法1

但在下一个实例中,它们会以不同的顺序调用:

方法3 方法2 方法1 方法4

我必须随机化顺序的代码如下所示:

public void randomCalls(){
    int[] order = new int[4];

    for(int i=0; i<order.length; i++){
        order[i]=nextNumber(order);
    }
}

public int nextNumber(int[] array){
    Random r = new Random();
    int x = r.nextInt();
    for(int i=0; i<array.length; i++){
        if(arrayHasNumber(array,x)){
            x = nextNumber(array);
        }
    }
    return x;
}

public boolean arrayHasNumber(int[] array, int x){
    for(int i=0;i<array.length;i++){
        if(array[i]==x){
            return true;
        }
    }
    return false;
}

最佳答案

根据@Aurand的建议,您可以有一个开关来调用您的方法和 List<Integer>它将包含您要调用的方法的索引,然后使用 Collections.shuffle 对列表元素进行打乱并调用 switch调用你的方法。代码示例:

final int METHODS_QUANTITY = 4;
List<Integer> lstIndexes = new ArrayList<Integer>();
for(int i = 1; i <= METHODS_QUANTITY; i++) {
    lstIndexes.add(i);
}
//you can change the condition for the number of times you want to execute it
while(true) {
    Collections.shuffle(lstIndexes);
    for(Integer index : lstIndexes) {
        switch(index) {
            case 1: method1(); break;
            case 2: method2(); break;
            case 3: method3(); break;
            case 4: method4(); break;
        }
    }
}

仍然存在问题:为什么在现实世界的应用程序中需要这个?

关于java - 以随机唯一顺序调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15674592/

相关文章:

java - Spring Boot 从我的模型和存储库类创建一个库

Java 无法及时收集垃圾

java - Pair Class有什么用,为什么要在这里实现?

c - 为什么我总是用 rand() 得到相同的随机数序列?

c++ - 每次使用 RNG 时播种好主意吗?

unique - 为每个用户个人资料创建唯一 url 的最佳做法是什么

java - 如何在所有包启动后调用 osgi 应用程序的启动方法?

python - 如何将列表随机分成n个几乎相等的部分?

r - Unique in data.table 错误地删除了一些值

PHP MYSQL 多个或单个 DISTINCT/UNIQUE 值