比如我有一个集合,我想每次都随机访问其中的一个数,但不重复访问,怎么办呢

解决方案 »

  1.   

    取集合长度以内的随机数,做为下标去访问;
    并将已经出现的随机数纪录下来;
    再取随机数,如果和已经用过的随机数相同,则重复取,直到取到没用过的位置;
    当使用的随机数个数和集合的长度相等时,结束;缺点:当集合长度比较大时,取随机数的操作会重复N多次;改良:增加一个集合B。所有已经访问过的元素从原集合中删除,移到B集合中;
    再用随机数对原集合进行访问……重复操作,到原集合为空为止
      

  2.   

    随机生成一个小于集合长度大于等于零的数,放到SET里.作为下标来访问你的集合.
      

  3.   

    兄弟,假设你要取的是一个String型数组aString result;
    Random rd=new Random();
    int i=rd.nextInt(a.length-1);//生成一个0到数组长度减1的随机数
    result=a[i];至于要不能重复取,你就得把上面生成的随机数放在一个数组中,当生成行的随机数的时候再取找一下有没有这个,有的话,就取取他减一(比如随机数是3,但发现3已经被取过,这去取2直到取到0,如果还不行就取a.length-1,还不行在依次递减,这样可以保证在a.lenght次取完!)