切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
C# 基础
Mybatis
ADO.NET
ASP.NET
Python 基础
Linq
Web Forms
.NET
Spring
SpringBoot
SpringCloud
.NET Core 中间件
Maven
.NET 类库
ASP.NET MVC
EF
NHibernate
WebApi
Java
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
服务端
二维数组实现一个随机分组的应用
## 1. 使用二维数组实现一个随机分组的应用 ### 1.1. 背景 将一个用逗号分隔的人名字符串,随机分组到各组内 ### 1.2. 实现思路 + 将含有名称的字符串分割存储在一个数组中, + 定义一个二维数组,数组长度为要分的组数,每个成员数组长度为,总人数/组数(向上取整) + 计算出需要遍历的最大次数(这里可能会出现人数不平均,人数不够使用空字符填充) + 通过遍历将人名逐个放入到二维数组中,注意已经被放入的人名要从随机过程中排除掉,下面示例使用的是刷新成员数组的方式  ### 1.3. 代码实现 ```csharp public void arrayApp() { int num = 3;//分组数量 string names = "曹操,曹丕,曹植,曹彰,曹洪,曹仁,曹叡,曹冲,曹节,曹纯,曹昂,曹休,曹真"; string[] name = names.Split(','); int startNum = name.Length; int maxLen = Convert.ToInt32(Math.Ceiling(name.Length / (double)num));//每组最多容纳的人数 string[,] array = new string[num, maxLen];//定义一个数组存放分组好的数据 int forNum = num * maxLen;//最大遍历次数 int indexChild = 0;//下一个索引 for (int i = 0; i < forNum; i++) { int index = i % num; if (index == 0 && i > 0)//是否进入下一个索引 { indexChild += 1; } if (i < startNum)//是否所有的人员都分好组了,不够的填充'' { name = names.Split(','); Random r = new Random(); int group = r.Next(0, name.Length); string nowName = name[group];//从人员中随机获取一个人 names = ("," + names + ",").Replace(nowName + ",", "").Trim(',');//获取完人员后重新刷新人员,去除已经分好组的人员 array[index, indexChild] = nowName; } else { array[index, indexChild] = ""; } } //显示分组的结果 for (int i = 0; i < num; i++)//行 { StringBuilder writes = new StringBuilder(); for (int j = 0; j < maxLen; j++)//列 { writes.Append(array[i, j] + ","); } Console.WriteLine(writes.ToString().Trim(',')); } Console.ReadKey(); } ``` > Tips:上面代码通过 index = i % num; 取模的方式获取当前是第几组,indexChild 则为每组的第几个成员
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号