比如说,数组元素为int[] array={1,3,4,8,7,6,9,11,17,21,24,31;
将这个数组随机分为四组,每组中的元素都是从array中随机分配的,有好的方法实现吗。

解决方案 »

  1.   

    public static void main(String[] args) {
    int[] array = { 1, 3, 4, 8, 7, 6, 9, 11, 17, 21, 24, 31 };
    List<Integer> list = new ArrayList<Integer>();
    for (Integer i : array) {
    list.add(i);
    }
    Collections.shuffle(list);
    int arrayCount = 3;                               //分的组数
    int arraySumCount = list.size() / arrayCount;     //每组数量
    int startIndex = 0;                               //每组开始下标
    StringBuilder sBuilder = new StringBuilder();
    for (int i = 0; i < list.size(); i++) {
    if ((i + 1) % arraySumCount == 0) {
    for (int j = startIndex; j <= i; j++) {
    sBuilder.append(list.get(j)).append(",");
    }
    sBuilder.append("/");
    startIndex = i + 1;
    }
    }
    String strArrayString[] = sBuilder.toString().split("/");
    for (String string : strArrayString) {
    System.out.println(string.substring(0, string.length() - 1));
    }
    }
      

  2.   

    Collections.shuffle先打乱数组,然后再平均分成4分
      

  3.   

    package test;import java.util.Random;public class RandomArray {
    public static void main(String[] args) {
    int[] array = { 1, 3, 4, 8, 7, 6, 9, 11, 17, 21, 24, 31 };
    Random random = new Random();
    int[] array1 = new int[3];
    int[] array2 = new int[3];
    int[] array3 = new int[3];
    int[] array4 = new int[3];
    for (int i = 0; i < 2; i++) {
    int index = random.nextInt(12);
    array1[i] = array[index];
    }
    for (int i = 0; i < 2; i++) {
    int index = random.nextInt(12);
    array2[i] = array[index];
    }
    for (int i = 0; i < 2; i++) {
    int index = random.nextInt(12);
    array3[i] = array[index];
    }
    for (int i = 0; i < 2; i++) {
    int index = random.nextInt(12);
    array4[i] = array[index];
    }
    System.out.print("数组1:");
    for (int i = 0; i < array1.length; i++) {
    System.out.print(array1[i] + ",");
    }
    System.out.print("数组2:");
    for (int i = 0; i < array2.length; i++) {
    System.out.print(array2[i] + ",");
    }
    System.out.print("数组3:");
    for (int i = 0; i < array3.length; i++) {
    System.out.print(array3[i] + ",");
    }
    System.out.print("数组4:");
    for (int i = 0; i < array4.length; i++) {
    System.out.print(array4[i] + ",");
    }
    }
    }
    这个没去重复,如果要去重复的话,得用list