從指定範圍獲取指定個數的正序排列的不重複隨機數
阿新 • • 發佈:2019-01-27
/** * 隨機數排序 * */ private void paiXun(int [] i){ List<String> list=new ArrayList<String>(); for(int t=0;t<i.length;t++){ //讓相鄰的元素進行比較 逆序交換位置 for(int t1=0;t1<i.length-1-t;t1++){ //判斷是否逆序 if(i[t1]>i[t1+1]){ //位置交換 int temp=i[t1]; i[t1]=i[t1+1]; i[t1+1]=temp; } } } for(int j=0;j<i.length;j++){ list.add(i[j]+""); Log.e("隨機數", list.get(j)); } tv.setText(list.toString()); } /** * 隨機指定範圍內N個不重複的數 * @param min 指定範圍最小值 * @param max 指定範圍最大值 * @param n 隨機數個數 */ public static int[] randomCommon(int min, int max, int n){ if (n > (max - min + 1) || max < min) { return null; } int[] arr = new int[n]; int count = 0; while(count < n) { int num = (int) (Math.random() * (max - min)) + min; boolean flag = true; for (int j = 0; j < n; j++) { if(num == arr[j]){ flag = false; break; } } if(flag){ arr[count] = num; count++; } } return arr; }