C#中random随机数重复问题
private void butFirst_Click(object sender, EventArgs e)
{
butStar.Enabled = false;
timer1.Stop();
listView1.Clear();
string str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Administrator\Desktop\vs2012lottery\Lottery.mdb";
OleDbConnection conn = new OleDbConnection(str);
conn.Open();
for (int i = 0; i < 5; i++)//一次产生5条抽奖记录
{
Random rand = new Random(Guid.NewGuid().GetHashCode());
int randkey = rand.Next(1, 400);
string select = "select DISTINCT [Number], [Name], [Department] from lottery where id=" + randkey + "";
string insert = "INSERT INTO trophy ([Number], Name, Department) SELECT [Number], Name, Department FROM lottery WHERE (id = " + randkey + ")";
OleDbCommand cmd = new OleDbCommand(select, conn);
OleDbCommand md = new OleDbCommand(insert, conn);
cmd.CommandType = CommandType.Text;
md.CommandType = CommandType.Text;
OleDbDataReader cr = md.ExecuteReader();
while (cr.Read())
{
}
OleDbDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
ListViewItem lt1 = new ListViewItem();//构建一个ListView的数据,存入数据库数据,以便添加到listView1的行数据中
//将数据库数据转变成ListView类型的一行数据
lt1.Text = dr["Number"].ToString();
lt1.SubItems.Add(dr["Name"].ToString());
lt1.SubItems.Add(dr["Department"].ToString());
lt1.SubItems.Add("纪念奖");
//将lt数据添加到listView1控件中
listView2.Items.Add(lt1);
}
}
conn.Close();
conn.Dispose();
listView2.SelectedItems.Clear();
listView2.Items[listView2.Items.Count - 1].Selected = true; //设置默认选中最后一行
listView2.Items[listView2.Items.Count - 1].EnsureVisible(); //设置滚动条自动向下滚动
itrophy++;
if (itrophy == 8)
{
MessageBox.Show("纪念奖抽奖结束");
MessageBox.Show("请继续滚动名单");
this.buttrophy.Enabled = false;
this.butStar.Enabled = true;
}
}
上面是我的代码,请大家帮看看我的随机数生成应该怎么改,我编程扔很久了,最近要搞个抽奖小系统
我这个button需要点击多次,我发现生成的名单有重复数据,数据库中已经有ID字段自动编号了,现在最困扰我的就是这个随机生成数字重复问题,在网上查了很多,可能是我写的不对都没能实现。请大神帮忙上点代码谢谢。