您的目標是產生兩個不同的隨機字串,每個字串包含四個字元。但是,您目前的程式碼會產生兩個相同的字串。
問題源自於在 RandomString 方法中建立新的 Random 實例。由於每次呼叫都會初始化該實例,因此它會產生相同的隨機數序列,從而導致重複的字串。
為了確保兩個字串唯一,我們需要確保 Random 實例只建立一次。我們可以透過讓實例靜態並使用種子值初始化它來做到這一點,例如當前時間(以刻度為單位):
private static Random random = new Random((int)DateTime.Now.Ticks);
透過使實例靜態並使用種子,我們確保隨機數每次呼叫RandomString 方法的序列都是不同的,如下面修改後的程式碼所示:
private static Random random = new Random((int)DateTime.Now.Ticks);//thanks to McAden private string RandomString(int size) { StringBuilder builder = new StringBuilder(); char ch; for (int i = 0; i < size; i++) { ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); builder.Append(ch); } return builder.ToString(); } // get 1st random string string Rand1 = RandomString(4); // get 2nd random string string Rand2 = RandomString(4); // creat full rand string string docNum = Rand1 + "-" + Rand2;
透過此修改,您的程式碼現在每次都會產生兩個不同的隨機字串被處決。
以上是為什麼我的隨機字串產生器返回相同的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!