随机数生成器,没有重复

时间:2015-04-16 08:03:25

标签: android arrays random textview generator

我很难确保下面的代码中没有出现重复数字。我尝试创建一个ArrayList来添加数组的所有可能索引,然后逐渐从List中删除数组的值,因为数字生成器会生成更多元素。这个;但是,没有像我预期的那样工作。我一直试图考虑它,但是Haven能够提出一个可行的解决方案。

Random randGen = new Random();
public boolean onTouchEvent(MotionEvent touchevent) {

switch (touchevent.getAction()) {
    case MotionEvent.ACTION_DOWN: {
        x1 = touchevent.getX();
        y1 = touchevent.getY();
        break;
    }
    case MotionEvent.ACTION_UP: {
        x2 = touchevent.getX();
        y2 = touchevent.getY();


        int maxLength=exampleArray.length;
        List<Integer>indices=new ArrayList<Integer>(maxLength);
        for(int i=0;i<maxLength;i++){
            indices.add(i);
        }

        int randomApple = randGen.nextInt(exampleArray.length);
        int randomNum=indices.get(randomApple)  ;
        indices.remove(randomApple);
        textView.setText(exampleArray[randomNum]);

        if (x1 < x2) {

        }

        if (x1 > x2) {

            //textView.setText(exampleArray[randomNum]);

        }

    }
    }

    return false;
}

1 个答案:

答案 0 :(得分:1)

我认为你错过了一些步骤并添加了无关的步骤......

一种简单的方法(如果你不关心数字是否继续上升)是继续向计数器添加随机正值。这样新的计数器将永远不同。

如果你这样做: 另一种方法是预先创建一个数字列表(顺序[1,2,3 ...]或你随机添加一些数量到每个新索引[rnd1,rnd1 + rnd2,rnd1 + rnd2 + rnd3 .. 。]),按shuffling the numbers (click this!)随机排序,然后简单地遍历创建的数组。