JAVA/ 将任意数组内的值乱序(生成随机数)的一种方法

之前做了一个任务就是设计一个随机分配的功能,比如说,给包含16个人姓名的名单,将其随机分配成8个组,每组2个人。

代码如下:

package com.hehe;

public class ArrTest {

    public static void main(String[] args) {
    String arr[]={"小A","小B","小C","小D","小E","小F","小G","小H",
"小I","小J","小K","小L","小M","小N","小O","小P"};
    String str;
    int num=8;//分成8个组
    int count=0;
    for(int i=0;i<arr.length;i++){
      int e=(int) Math.round((arr.length-1)*Math.random());
      str=arr[e];
      arr[e]=arr[arr.length-1];
      arr[arr.length-1]=str;
    }
    for (int i = 0; i < arr.length; i++) {
      count++;
      System.out.print(arr[i]+" ");
      if(count%(arr.length/num)==0){
        System.out.println("");
      }
    }
  }
}

输出结果为:

小A 小D 
小C 小G 
小E 小J 
小I 小H 
小B 小P 
小K 小L 
小M 小N 
小O 小F 

思路为,在字符串数组长度范围内生成一个随机数,将在该位置的值与数组最后一位交换,循环n次,原字符串数组的顺序就被打乱了,变成了随机的。

同理,如需生成随机数。例如生成100以内的随机数:

public class RandNumTest {

public static void main(String[] args) {
    int sum=100;
    int arr[]=new int[sum];
    int numb;
    int num=10;//分成num个组
    int count=0;
    for(int i=0;i<sum;i++){
      arr[i]=i+1;
    }
    for(int i=0;i<sum;i++){
      int e=(int) Math.round((arr.length-1)*Math.random());
      numb=arr[e];
      arr[e]=arr[arr.length-1];
      arr[arr.length-1]=numb;
    }
    for (int i = 0; i < arr.length; i++) {
      count++;
      System.out.print(arr[i]+" ");
      if(count%(arr.length/num)==0){
        System.out.println("");
      }
   }
}

}

输出结果为:

57 2 3 4 93 97 42 83 33 39 
47 11 17 14 35 16 63 59 19 40 
21 22 99 24 25 26 27 84 48 70 
31 32 30 34 9 36 53 38 6 94 
41 58 43 44 100 46 5 64 49 50 
51 52 7 54 55 56 91 12 76 29 
8 28 60 75 80 66 77 68 69 86 
71 67 73 23 15 13 37 78 79 74 
81 10 1 20 85 82 87 88 89 61 
95 18 45 92 90 96 72 98 65 62





猜你喜欢

转载自blog.csdn.net/sagitarioo/article/details/61196602