//随机分组相关
//结合List的remove()方法//及Random.next() 动态的取出新的List索引实现随机分组
//
<pre name="code" class="csharp"> //Test 随机分组
[HttpPost]
public ActionResult RandomsGroupsStu(int totalStuNum, int groupNum)
{
//totalStuNum 总人数 //groupNum 每组人数
int groupClub = 0; //组数
int groupNumTemp = totalStuNum / groupNum;
int groupTemp = totalStuNum % groupNum; //多余的人数
if (groupTemp == 0) groupClub = groupNumTemp;
else groupClub = groupNumTemp + 1; //多余人数单独成组
//
List<int> tempList = new List<int>();//List用于动态Remove索引
List<StuArrModel> StuInfoList = new List<StuArrModel>();//学生基本信息List
//构造数据/用于Test
for (int i = 0; i < totalStuNum; i++)
{
StuArrModel stuModel = new StuArrModel();//学生基本信息构造类
stuModel.StuID = "No" + Convert.ToString(i + 1);
stuModel.StuName = "A" + Convert.ToString(i + 1);
StuInfoList.Add(stuModel);
tempList.Add(i);
}
string[] StuIDArr = new string[groupClub];
string[] StuNameArr = new string[groupClub];
for (int j = 0; j < groupClub; j++)
{
for (int t = 0; t < groupNum; t++)
{
if (tempList.Count == 0) break;
int value = tempList[new Random((int)DateTime.Now.Ticks).Next(0, tempList.Count)];//(0-tempList.count)间的随机数
tempList.Remove(value); //动态移除
StuIDArr[j] += StuInfoList[value].StuID + "@";
//StuNameArr[j] += StuInfoList[value].StuName + "@";
}
StuIDArr[j] = StuIDArr[j].Substring(0, StuIDArr[j].Length - 1);
}
return Json(StuIDArr, JsonRequestBehavior.AllowGet);
}