如何避免重复随机数并在android中选择另一个?

时间:2012-06-08 17:23:45

标签: java android

我有一个Arraylist和一个像这样的整数数组,

ArrayList<Integer> ar= new ArrayList<Integer>();
    int[] number= {0,1,2,3,4,5};

现在我想从这个数组加注整数,我点击一个按钮,没有任何重复。在烘烤了这个数组中的每个数字后,我想要'完成',我在onclick监听器中的逻辑就在这里:

Random r = new Random();

            int i1=r.nextInt(number.length-0) + 0;
            if(!ar.contains(i1)){
            Toast.makeText(getApplicationContext(), ""+i1, Toast.LENGTH_LONG).show();
            ar.add(i1);
            }else{

                Toast.makeText(getApplicationContext(), "Finished", Toast.LENGTH_LONG).show();
            }

但这并没有找到我的方式,它没有重复任何数字,但如果它在第二次点击中得到一个重复的数字然后它是烘烤完成,但我想在整数数组中的每个数字都烘烤后烘烤它,wat应该是我修改过的逻辑吗?

2 个答案:

答案 0 :(得分:2)

ArrayList<Integer> ar= new ArrayList<Integer>();
int[] number= {0,1,2,3,4,5};
for (int i : number) {
    ar.add(i);
}

Random r = new Random();

// repeat this part and you will never have duplicate numbers
int select = r.nextInt(ar.size());
int random = ar.get(select);
ar.remove(select);

答案 1 :(得分:2)

LinkedList<Integer> ar = new LinkedList<Integer>();
    int[] number = { 0, 1, 2, 3, 4, 5 };
    for (int i : number) 
        ar.add(i);
    Collections.shuffle(ar);


    //every time you click:
    if (ar.isEmpty()) { 
        //toast finished
    } else {
        Integer pop = ar.pop();
        //toast pop
    }