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 關注
- 241 瀏覽
添加回答
舉報