首頁 >後端開發 >C++ >為什麼我的隨機字串產生器返回相同的字串?

為什麼我的隨機字串產生器返回相同的字串?

DDD
DDD原創
2025-01-05 00:57:39323瀏覽

Why Does My Random String Generator Return Identical Strings?

傳回相同字串的隨機字串產生器

您的目標是產生兩個不同的隨機字串,每個字串包含四個字元。但是,您目前的程式碼會產生兩個相同的字串。

問題源自於在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn