假設你有一排順序排列的撲克牌,你要作的就是從新排序使得原有的順序排列變爲無序排列.java
static public void shuffle(int a[]){ TreeMap<Float,Integer> tm=new TreeMap<>();//使用Float(隨機數)--Integer(數字)鍵值對的map來存儲隨機數和數字的組合 //同時利用Treemap對鍵的排序功能對隨機數進行排序 Random r=new Random();//建立Random對象 for(int i=0;i<a.length;i++)//按順序給每一個數字一個隨機數,並添加到Treemap tm.put(r.nextFloat(),a[i]); int i=0; for(Float key:tm.keySet()) {//從Treemap中按順序取出值,並放入到原數組中 a[i] = tm.get(key); i++; } }
static public void kunthShuffle(int[] a){ Random r=new Random();//建立Random對象 int temp;//交換臨時變量 for(int i=1;i<a.length;i++){//顯而易見下標爲0的數字不用交換 int ri=r.nextInt(i+1);//隨機生成的0-i的下標 temp=a[ri];//交換下標爲i和下標爲ri的兩個數 a[ri]=a[i]; a[i]=temp; } }