随机排班是没意义的,通常4个人排是这样,以a为例,每一天上一个中班,每二天上一个早班和一个晚班,每三天休息,每四天继续上中班。这样就是三个人在轮班,多出的一个人在休月假,二个轮次后休假的人代替其中一人值班。
以下是一个随机排班的算法,仅供参考。
//按顺序排班,y代表日期,x代表班次
string[] str = new string[4] { "张","王","赵","李"};
int b = 0;
string [,] abc=new string[30,3];
for(int y=0;y<30;y++)
{
for (int x = 0; x < 3; x++)
{
abc[y,x] = str[b%4];
b++;
}
}
//以下随机排序可保证每个人的值班次数不变
Random ran = new Random();
string temp;
int x1, y1, x2, y2;
for (int x = 0; x < 100; x++)
{
x1 = ran.Next(2);
x2 = ran.Next(2);
y1 = ran.Next(29);
y2 = ran.Next(29);
temp = abc[y1,x1];
abc[y1, x1] = abc[y2, x2];
abc[y2, x2] = temp;
}