2 回答
TA贡献1786条经验 获得超11个赞
C#所提供的随机数,多是以随机种子为依据,产生第一个随机数,而后随机数根据上一个随机数产生。根据你的程序,在很短时间内随机数的种子还没有更新,所以会产生相同的随机数的错觉。
你只要将此随机数Rendom从循环里拿出来即可。
感兴趣的话,也可以这样,在你的
Random rnd = new Random(); 后加上
Thread.Sleep(15);
也可以噢0.0
TA贡献1818条经验 获得超3个赞
有个很简单的改法
为了做测试我修改了一下你的程序,结构没变
private void button1_Click(object sender, System.EventArgs e)
{
string stemp = "";
string[] tempDuty = new string[10];
Random rnd = new Random();
for (int i = 0; i < tempDuty.Length; i++)
{
tempDuty[i] = CreateDutyID(rnd);
stemp+=tempDuty[i]+",";
}
MessageBox.Show(stemp);
}
public string CreateDutyID(Random rand)
{
string datetime = String.Format("{0:yyyyMMddHHmmss}", System.DateTime.Now);
string suiji = rand.Next(4, 9999).ToString();
return datetime + suiji;
}
- 2 回答
- 0 关注
- 188 浏览
添加回答
举报