Rumah > pembangunan bahagian belakang > C++ > Mengapa Penjana Rentetan Rawak Saya Menghasilkan Output Pendua?

Mengapa Penjana Rentetan Rawak Saya Menghasilkan Output Pendua?

Mary-Kate Olsen
Lepaskan: 2025-01-05 11:17:41
asal
233 orang telah melayarinya

Why Does My Random String Generator Produce Duplicate Outputs?

Output Pendua Penjana Rentetan Rawak

Matlamat anda adalah untuk menjana dua rentetan rawak empat aksara yang berbeza. Walau bagaimanapun, kod semasa anda mengembalikan pendua.

Punca Punca

Punca Punca terletak pada pemulaan tika Rawak dalam kaedah RandomString. Setiap penyebutan kaedah mencipta tika baharu Rawak, menghasilkan jujukan nombor rawak yang sama.

Penyelesaian

Untuk memastikan dua rentetan rawak yang unik, gerakkan permulaan bagi contoh Rawak di luar kaedah, ke peringkat kelas. Ini memastikan bahawa satu tika digunakan sepanjang hayat kelas.

Kod Diubah Suai

private static Random random = new Random((int)DateTime.Now.Ticks);

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);

// create full rand string
string docNum = Rand1 + "-" + Rand2;
Salin selepas log masuk

Contoh Output

Kod yang diubah suai akan menghasilkan dua rentetan rawak empat aksara yang unik, seperti sebagai:

UNTE-FWNU
Salin selepas log masuk

bukannya pendua seperti:

UNTE-UNTE
Salin selepas log masuk

Dengan memulakan kejadian Rawak pada peringkat kelas, anda memastikan bahawa urutan nombor rawak yang konsisten digunakan, menghasilkan unik rentetan rawak.

Atas ialah kandungan terperinci Mengapa Penjana Rentetan Rawak Saya Menghasilkan Output Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan