通常4个人排是这样,以a为例,每一天上一个中班,每二天上一个早班和一个晚班,每三天休息,每四天继续上中班。这样就是三个人在轮班,多出的一个人在休月假,二个轮次后休假的人代替其中一人值班。
以下是一个随机排班的算法,仅供参考。
//按顺序排班,y代表日期,x代表班次
代码如下 | 复制代码 |
string str = new string { "张","王","赵","李"}; int b = 0; string abc=new string; //以下随机排序可保证每个人的值班次数不变 |
实例二
每次查询出来那个数组 ,数组里面数据的顺序都不一样
代码如下 | 复制代码 |
int[] array = new int[10]; for (int i = 0; i < 10; i++) { array[i] = i + 1; } int len = array.Length; Random rnd = new Random(); for (int j = 0; j < len; j++) { int pos = rnd.Next(len); int temp = array[pos]; array[pos] = array[j]; array[j] = temp; } string sortStr = ""; for (int i = 0; i < len;i++) { sortStr += array[i] + ","; } MessageBox.Show(sortStr); |
数组的随机排序,也就是把一个数组的元素顺序打乱,例如洗牌。
代码如下 | 复制代码 |
public static T[] RandomSort<T>(T[] array) ...{ int len = array.Length; List<int> list = new List<int>(); T[] ret=new T[len]; Random rand = new Random(); int i = 0; while (list.Count < len) ...{ int iter = rand.Next(0, len); if (!list.Contains(iter)) ...{ list.Add(iter); ret[i] = array[iter]; i++; } } return ret; } 调用例: |