如何将一个数组随机分为四组
比如说,数组元素为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的随机数,分别对应四个数组 。。。。。不过每个数组的元素个数不等
[解决办法]
被分配的数组的长度也是随机的么?
[解决办法]
随机生成几个数字作为数组下标就ok了
[解决办法]
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