假设你有一排顺序排列的扑克牌,你要作的就是从新排序使得原有的顺序排列变为无序排列.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; } }