亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問各位慕友們,我的程序問題出在哪里,怎樣解決這樣的問題??

請問各位慕友們,我的程序問題出在哪里,怎樣解決這樣的問題??

C
尚方寶劍之說 2023-04-08 18:14:50
定義了 一個去的隨機字符串的 函數:如下public string CreateDutyID(){string datetime = String.Format("{0:yyyyMMddHHmmss}", System.DateTime.Now);Random rnd = new Random();string suiji = rnd.Next(4, 9999).ToString();return datetime + suiji;}然后聲明一個字符串數組,通過循環調用這個函數,這樣,理論上數組的每個元素會調用該函數,得到不同的值!可實際是非常奇怪的。我沒有跟蹤程序時,數組里每個元素得到的值都是一樣的 ,當在循環處設置斷點的時候 ,數組里每個元素得到的值,就不同。以下是循環調用隨機函數,字符串數組取得隨機值?。海海簊tring[] tempDuty = new string[GridView1.Rows.Count + 1];arrSql.Add(SqlString);for (int i = 0; i < tempDuty.Length; i++){tempDuty[i] = CreateDutyID();}
查看完整描述

2 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

C#所提供的隨機數,多是以隨機種子為依據,產生第一個隨機數,而后隨機數根據上一個隨機數產生。根據你的程序,在很短時間內隨機數的種子還沒有更新,所以會產生相同的隨機數的錯覺。

你只要將此隨機數Rendom從循環里拿出來即可。

感興趣的話,也可以這樣,在你的

Random rnd = new Random(); 后加上

Thread.Sleep(15);

也可以噢0.0

 


查看完整回答
反對 回復 2023-04-11
?
泛舟湖上清波郎朗

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; 

}


查看完整回答
反對 回復 2023-04-11
  • 2 回答
  • 0 關注
  • 241 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號