我想请问一个关于随机数问题,我本身有一个图片数组(9张完全不同的图片),我想用随机数把这些数组里的图片随机贴在手机屏幕上,当然不能够产生图片重复的情况出现,我试了很多次都不行,所以上来请教一下各位高手,望能给出切实可行的方法,谢谢

解决方案 »

  1.   

    int[] a1 = {...};//放9张图片
    int[] a2 = new int[9];//随机数组int max = 9;
    int temp = 0;
    Random random = new Random();
    int rnd_num = 0;while (max >= 0)
    {
        rnd_num = random.nextInt(max);
        a2[temp] = a1[rnd_num];
        a1[rnd_num] = a1[m - 1];
        temp++;
        max--;
    } 仿佛是这样
      

  2.   

    http://community.csdn.net/Expert/topic/5208/5208270.xml?temp=.1766474
      

  3.   

    我想你可以先用洗牌程序打乱图片数组的顺序成为一个随机的顺序,然后依次将图片输出就好了。public void printpicture(){
    int N;//图片的数目;
    int suffixpic = new suffixpic[N];//定义一个新的数组,数组中的元素的值就是将来要输出的图片的下标。
    for(int i=0; i<N; i++)//初始化该数组
       suffixpic[i] = i;
    //下面这段代码将采用洗牌算法,随机打乱数组ArrayPic中的元素。
      Random   r   =   new   Random();   
      for(int i=0; i<N; i++){
         int temp = r.nextInt(N);
         swap(suffixpic[i],suffixpic[temp]); //交换数组中的元素
      }
    ///////////////////
    //好了,可以根据suffixpic数组输出图片了
      for(int i=0; i<N; i++)
        printpic(arraypic[suffixpic[i]]); //根据数组suffixpic的值作为下标输出图片。}
      

  4.   

    我用的是J2ME里imageAll = new Image[9];
    for (int i = 0; i < 9; i++) {
    try {
    imageAll[i] = Image.createImage("/2." + i + ".png");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    这样加载图片的啊
      

  5.   

    import java.util.*;public class PrintOut2 {
      public static void main(String[] args) {
        int array[] = {
            1, 2, 3, 4, 5, 6, 7, 8, 9};
        int array2[] = new int[9];
        Random f = new Random(); //构造一个新的随机数生成器
        for (int i = 1; i <= 9; i++) {
          int a = f.nextInt(9); //返回一个0~9之间的随机数
          for (int j = 0; j < i; j++) {
            if (array2[j] == array[a]) {
              break;
            }
            
              array2[i] = array[a];
              }
          for(int t=0;t<9;t++)
            System.out.println(array2[t]);
          
        }
      }
    }
    我是这样用随机数写的
    也不知道对不对
    你自己看看吧
    好像有点问题!!!
    但我也只有这点水平了
    对不起拉!!
      

  6.   

    我想你可以先用洗牌程序打乱图片数组的顺序成为一个随机的顺序,然后依次将图片输出就好了。public void printpicture(){int N=9;//图片的数目;
    imageAll = new Image[9]; for (int i = 0; i < 9; i++) {
    try {
    imageAll[i] = Image.createImage("/2." + i + ".png");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    int suffixpic = new suffixpic[N];//定义一个新的数组,数组中的元素的值就是将来要输出的图片的下标。
    for(int i=0; i<N; i++)//初始化该数组
       suffixpic[i] = i;
    //下面这段代码将采用洗牌算法,随机打乱数组suffixpic中的元素。
      Random   r   =   new   Random();   
      for(int i=0; i<N; i++){
         int temp = r.nextInt(N);
         int element;
         element =  suffixpic[i];
         suffixpic[i] = suffixpic[temp];
         suffixpic[temp] = element;
      }
    ///////////////////
    //好了,可以根据suffixpic数组输出图片了
      for(int i=0; i<N; i++)
        printimage(imageAll[suffixpic[i]]); //根据数组suffixpic的值作为下标输出图片。}这个程序已经基本可以用拉,只要你自己有一个输出图片的接口函数printimage就可以了
      

  7.   

    blueblueorange()
    能否+Q详聊一下
    16050810
      

  8.   

    我倒有个类,专门产生不重复的随机数的
    还可以根据你自己的需要,产生n个从a到b的不重复的随机数
    比如你的是9个从0到8的咯哈
    要的话我可以给你。
    q170439862注明要那个类的
      

  9.   

    int i = 0 ;
    int[] b1 = new int[10];
    for(int j=0; j<10; j++)//初始化该数组
       b1[j] = -1;
    int count=0 ;

    Random a1 = new Random();
    while(count<10)
    {
    i = a1.nextInt(10) ;
    if(inedexOf(b1,i)==-1){
    b1[count++] = i ; 
    }
    }



    public static int inedexOf(int[] b1,int a){

    for(int i=0;i<10;i++)
    {
    if(b1[i]==a) return i ;
    }
    return -1;
    }
    其中b1就生成了0-9的随即排列,