我有如何生成随机图像而不重复,作为一个例子驱动阵列15图像和7图像发送imageview但不重复。
int[] img={ R.drawable.ima1,R.drawable.ima2,R.drawable.ima3,R.drawable.ima4,R.drawable.ima5,R.drawable.ima6,R.drawable.ima7,R.drawable.ima8,R.drawable.ima9,R.drawable.ima10,R.drawable.ima11,R.drawable.ima12,R.drawable.ima13,R.drawable.ima14,R.drawable.ima15};
int [] game= new int[7];
Random numerRan = new Random();
for (int i=0;i<game.length ;i++)
{
int num= numerRan.nextInt(17);
int x= img[num];
game[i]=img[num];
}
img1.setImageResource(juego[0]);
img2.setImageResource(juego[1]);
img3.setImageResource(juego[2]);
img4.setImageResource(juego[3]);
img5.setImageResource(juego[4]);
img6.setImageResource(juego[5]);
img7.setImageResource(juego[6]);
img8.setImageResource(juego[7]);
当我按下按钮控制图像到分数rando生成的位置。我遇到的问题是图像重复。
我使用2个安排,第一个是保存所有图像,第二个是保留将分配imageview的随机图像。
而不是使用int[]
数组,而是使用List<Integer>
,例如ArrayList<Integer>
。
这样,你就可以使用Collections#shuffle()
,它会产生预期的效果。它将以非重复的方式随机置换您的列表。你以后要做的就是迭代那个List
。
有关详细信息,请参阅Collections文档。
您还可以将该数组转换为List
,如下所示:
List<Integer> myList = Arrays.asList(img);
有关更多信息,请查看this question。