当前位置 博文首页 > mojianpo 莫建坡:java 随机打乱数组中的数据位置

    mojianpo 莫建坡:java 随机打乱数组中的数据位置

    作者:[db:作者] 时间:2021-08-01 11:53

    java随机排列数组 :

    /*
    * 随机排列数组,使用优先级方式,每个数组元素A[i] 对应一个优先级P[i],
    * 然后依据优先级对数组进行排序
    */
    private static void permuteBySort(int[] data)
    {
    int len=data.length;
    int len3=len*len*len;
    int P[]=getRandom(1,len3,len);

    //冒泡排序
    for(int i=len-1; i>0; i--)
    {
    for(int j=0; j<i ; j++)
    {
    if(P[j]>P[j+1])
    {
    int temp=data[j];
    data[j]=data[j+1];
    data[j+1]=temp;

    temp=P[j];
    P[j]=P[j+1];
    P[j+1]=temp;
    }
    }
    }
    }
    /*
    * 元素A[i]是从 元素A[i]到A[n]中随机选取的
    */
    private static void randomizeInPlace(int[] data)
    {
    Date dt=new Date();
    Random random=new Random(dt.getSeconds());
    int len=data.length;
    for(int i=0; i<len; i++)
    {
    int pos=(int)(random.nextDouble()*(len-i+1)+i)-1;
    int temp=data[i];
    data[i]=data[pos];
    data[pos]=temp;
    }
    }

    /*
    * 获得在a到b之间的n个随机数
    */
    private static int[] getRandom(int a,int b,int n)
    {
    if(a>b)
    {
    int temp=a;
    a=b;
    b=temp;
    }

    Date dt=new Date();
    Random random=new Random(dt.getSeconds());
    int res[]=new int[n];
    for(int i=0; i<n; i++)
    {
    res[i]=(int)(random.nextDouble()*(Math.abs(b-a)+1))+a;
    }
    return res;
    }


    ===================================

    使用
    Collections.shuffle(list);cs