c# 随机函数

zhdd_06 2008-05-16 08:01:16
我在做毕业设计管理系统,我首先给教师分组,比如说分成了5组
现在我要把学生随机分成5组,但是有一个要求:学生不能和指导教师在同一个组中
for(i=0;i<scount;i++)
{
int temp = rand.Next(a.Count - 1);//随机生成一个在在数组a大小范围内的非负数
m = (int)a[temp];//用以上的随机数temp为索引,得到数组a[temp]的值,我们设定为:m
b[i] = m;//将m赋值给b
if(!a.Contains(temp))
{
a.Add(temp);
dr = ds.Tables["student"].Rows[b[i]];
SqlCommand sqlcommand = new SqlCommand("update student set stu_group = @sgroup where stu_id = @stu_id",conn1);
sqlcommand.Parameters .Add(new SqlParameter("@stu_id",SqlDbType.Char,12));
sqlcommand.Parameters["@stu_id"].Value = dr["stu_id"].ToString();
if(i % j ==0 && jj <= sgroup)//j中记录了每组教师的人数,jj记录组别
{
mm = jj;
jj = jj + 1;
}
sqlcommand.Parameters.Add(new SqlParameter("@sgroup",SqlDbType.Int,4));
sqlcommand.Parameters["@sgroup"].Value = Convert.ToString(mm);
DataSet dset = new DataSet();
SqlDataAdapter sqldd = new SqlDataAdapter("select * from student s,teacher t,works w where s.stu_works = w.works_title and w.works_state='已选定' and t.tea_id = w.tea_id and s.stu_id = '"+dr["stu_id"].ToString()+"' and t.rejoin_group = '"+ mm +"'",conn1);
sqldd.Fill(dset);
int sum = dset.Tables[0].Rows.Count;
if(sum == 0)
{
sqlcommand.ExecuteNonQuery();
}
else
{
i = i - 1;
//a.RemoveAt(temp);
}
}
不能实现
请问如何实现呢?
...全文
98 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
csharp_start 2008-05-16
  • 打赏
  • 举报
回复

//举一个例子给你
List<string> student = new List<string>();
List<string> teacher = new List<string>();
List<string> result = new List<string>();
student.AddRange(new string[] { "A1","B1","C1","D1","E1"});
teacher.AddRange(new string[] { "A", "B", "C", "D", "E" });
for (int i = 0; i < student.Count; i++)
{
bool isFindSelt = false;
if(teacher.Contains(student[i].Substring(0,1)))
{
teacher.Remove(student[i].Substring(0, 1));
isFindSelt = true;
}
Random rand = new Random();
int index = rand.Next(0, teacher.Count - 1);
string s = teacher[index];
teacher.RemoveAt(index);
if (isFindSelt)
teacher.Add(student[i].Substring(0, 1));
result.Add(student[i] + "--" + s);
}
for (int i = 0; i < result.Count ; i++)
{
System.Windows.Forms.MessageBox.Show(result[i].ToString());
}
Kevin_LiuFeng 2008-05-16
  • 打赏
  • 举报
回复
太多了,懒的看,把最主要的问题表示出来。。。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧