我很难确保下面的代码中没有出现重复数字。我尝试创建一个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;
}
答案 0 :(得分:1)
我认为你错过了一些步骤并添加了无关的步骤......
一种简单的方法(如果你不关心数字是否继续上升)是继续向计数器添加随机正值。这样新的计数器将永远不同。
如果你这样做: 另一种方法是预先创建一个数字列表(顺序[1,2,3 ...]或你随机添加一些数量到每个新索引[rnd1,rnd1 + rnd2,rnd1 + rnd2 + rnd3 .. 。]),按shuffling the numbers (click this!)随机排序,然后简单地遍历创建的数组。