最简单的方法是用数据库本身的随机排序方法,如
sqlserver 中 select top 要分配到某实习点某专业的学生数 学生 from 学生表 order by newid()
当然在每次分配完学生后,要将已进行分配的学生进行已分配标识,避免进行重复分配。

解决方案 »

  1.   

    随机每次取一个专业
    放一个数组里
    循环
    从0开始.第一次取从0到最大的随机
    然后取出来和0位置对换
    ...
    第n次,取从n到最大的随机
    然后取出来的数和n位置对换
    ...
    这样就直接把所有数据都随机了
    然后直接从s1到s15分配就可以了
    然后再下一个专业....
      

  2.   

    nealbox 
    能稍微给点例子么,没头绪啊
      

  3.   

    总共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个地点就可以了
    }
    第二种方法也可以一次把所有数据都取出来,然后总的随机
    然后在循环里按专业对这数据进行分配.