JAVA用随机数给班上58个同学自动分组
在main函数中完成下面功能:实现对班上同学的自动分组,从键盘输入一个整数m(m在2到10之间,表示每组需要m个人,最后不足m的构成一组),程序就能按照这个整数对全班58个人自动分组,(每组成员都是随机产生的),并输出各组成员的情况。
              
                  java
              
------解决方案--------------------package com.test;
public class Test {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] k = new Test().group(9,58);
		for(int i=0;i<k.length;i++){
			System.out.print("第  "+i+" 组:    ");
			for(int j=0;j<k[i].length;j++){
				System.out.print(k[i][j]+"  ");
			}
			System.out.println();
		}
	}
	public int[][] group(int m,int all){
		//m 每组几人
		int temp = 0;
		int i = 0,j = 0;
		int[][] k = null;
		int[] allpeoples = new int[all];
		for(i = 0;i < allpeoples.length;i ++){
			allpeoples[i] = i + 1;
		}
		for(j = 0;j < 3;j ++){
			for(i = 0;i < allpeoples.length;i ++){
				int rand1 = (int)(Math.random()*allpeoples.length);
				int rand2 = (int)(Math.random()*allpeoples.length);
				temp = allpeoples[rand1];
				allpeoples[rand1] = allpeoples[rand2];
				allpeoples[rand2] = temp;
			}
		}
		
		int a = 58/m;//组数
		int b = 58%m;
		if(b == 0){
			k = new int[a][m];
			int step = 0;
			for( i = 0;i < a;i ++){
				k[i] = new int[m];
				for(j = 0;j < m;j ++){
					k[i][j] = allpeoples[step];
					step ++;
				}
			}
		}else{
			//b = b + 1;
			k = new int[a+1][m];
			int step = 0;
			for(i = 0;i < a;i ++){
				k[i] = new int[m];
				for(j = 0;j < m;j ++){
					k[i][j] = allpeoples[step];
					step ++;
				}
			}
			k[a] = new int[b];
			for(i = 0;i < k[a].length;i ++){
				k[a][i] = allpeoples[step];
				step ++;
			}
		}
		return k;
	}
}
------解决方案--------------------其实这个问题实质就是让你做一个不重复的随机数序列,楼上的可以满足要求,另外你可以试试作如下操作:将student[]{1,2,3...58}58个数组,通过Random类的nextInt()方法随机产生一个0-57的下角标,将其对应的数组值和该数组最后一个值student[n]交换位置,然后继续从余下的57个数组中在随机去一个数组,与student[n-1](初始n为57)值交换,继续从余下的56位中随机去一个值,以此类推。代码也就50行左右吧,自己写吧,太简单了,另外你可以到网上查一下产生不重复随机数列的方法,从中挑一个就好了。
------解决方案--------------------路过