3个一组产生N组不重复的随机数,随机分组
电脑版发表于:2020/1/2 11:42
可以用来做随机分组,思路就是先参数一个不重复的随机数列表,然后在根据几个一组进行分组即可。
例如如下需求:写段代码来让一个班的人随机分几个小队,比如这个班21个人,3个人一队
参考代码如下:
public void Index() { Response.ContentType = "text/html;charset=UTF-8"; List<string> namelist = names.Split(',').ToList(); //先随机参数不重复的随机数 Random random = new Random(); List<int> poilist = new List<int>(); for (int i = 0; i < namelist.Count; i++) { int randomNum = random.Next(0, namelist.Count); if (poilist.Contains(randomNum)) { i--; continue; } poilist.Add(randomNum); } //根据数字分组(3个一小组),然后把结果在用个双循环输出 foreach (List<int> itemList in poilist.GroupByNum(3)) { foreach (int item in itemList) { Response.Body.Write(System.Text.Encoding.UTF8.GetBytes(namelist[item] + " ")); } Response.Body.Write(System.Text.Encoding.UTF8.GetBytes("<br/>")); } }
GroupByNum是个根据数组分组的扩展方法,自己封装的