怎么将一个数组随机分为四组

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

------解决方案--------------------
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));
}
}

------解决方案--------------------
取从1到数组长度的整型随机数,遇到重复的重新取,
随机数对应数组下标
------解决方案--------------------
数组的长度为10的话,
10除以4得到长度。
然后对0到9分到4个组里面,直接取数组下标就可以了。
------解决方案--------------------
Collections.shuffle先打乱数组,然后再平均分成4分

------解决方案--------------------
对每个元素取出0-3的随机数,分别对应四个数组 。。。。。不过每个数组的元素个数不等