求一个随机分配的算法。
学校有10个专业,专业分别是01,02.....10
现在学校的学生需要去实习了,提供了15个实习点,实习点代码分别为
s01,s02,s03........s15
并且为每个实习点指定了每个专业对应的实习人数,比如
s01 指定实习专业人数
01 5人
02 0人
03 30人
04 5人
....................
哪位高人能帮忙解决一下,当我把每个实习点的对应专业的人数设置好之后,把对应专业的学生随机分配到对应的实习点
这个算法我应该怎么来写,对算发接触太少,很急,求大家帮忙。为谢:)
--------------------编程问答-------------------- 这个似乎不需要算法
另外 15个实习地点都能供任何一个专业实习么?那还分专业干吗? --------------------编程问答-------------------- 15个实习点提供学校10个专业中一部分专业,而且有人数限制,只能有那么多人。 --------------------编程问答-------------------- 没啥啊,按专业轮询就是了 --------------------编程问答-------------------- 最简单的方法是用数据库本身的随机排序方法,如
sqlserver 中 select top 要分配到某实习点某专业的学生数 学生 from 学生表 order by newid()
当然在每次分配完学生后,要将已进行分配的学生进行已分配标识,避免进行重复分配。 --------------------编程问答-------------------- 除了用数据库,就没其他的方法了么? --------------------编程问答-------------------- 随机每次取一个专业
放一个数组里
循环
从0开始.第一次取从0到最大的随机
然后取出来和0位置对换
...
第n次,取从n到最大的随机
然后取出来的数和n位置对换
...
这样就直接把所有数据都随机了
然后直接从s1到s15分配就可以了
然后再下一个专业.... --------------------编程问答-------------------- 这个问题不能随机吧,要是随机成一个专业到同一个学校去了呢,还是轮换好一些,只不过随机选择起点,同一专业随机排序,这样就可以达到目的 --------------------编程问答-------------------- 可以做一个这样的模型
每个专业当做一个数组链表,每个实习点对应表中的一个结点(数组),然后随机向这些数组里面填学生就可以了 --------------------编程问答-------------------- 我说过了
按每个进行的随机啊 --------------------编程问答-------------------- nealbox
能稍微给点例子么,没头绪啊 --------------------编程问答-------------------- 总共10个专业的话.
按简单的,可以分别取10个专业然后单独随机填充
把所有数据可以放到个数组中
string[] id; //学生的id
int count = id.Length -1;
for (int i = 0; i < id.Length; i++)
{
Random rd = new Random();
int num = rd.Next(i, count);
string change = id[i];
id[i] = id[num];
id[num] = change;
这样,本专业人员就可以随机了,然后按数量分别分配到10个地点就可以了
}
第二种方法也可以一次把所有数据都取出来,然后总的随机
然后在循环里按专业对这数据进行分配. --------------------编程问答-------------------- 接分
补充:.NET技术 , ASP.NET