Rumah > pembangunan bahagian belakang > C++ > Mengapa Penjana Rentetan Rawak Saya Terus Menghasilkan Rentetan Yang Sama?

Mengapa Penjana Rentetan Rawak Saya Terus Menghasilkan Rentetan Yang Sama?

Linda Hamilton
Lepaskan: 2025-01-05 22:41:38
asal
582 orang telah melayarinya

Why Does My Random String Generator Keep Producing the Same String?

Isu Konsistensi Penjana Rentetan Rawak

Masalah:

Penjana rentetan rawak gagal menghasilkan rentetan yang berbeza walaupun dipanggil beberapa kali. Sebaliknya, ia menjana rentetan rawak yang sama berulang kali.

Kod:

private string RandomString(int size)
{
    StringBuilder builder = new StringBuilder();
    Random random = new Random(); // Random object created each time
    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();
}
Salin selepas log masuk

Sebab:

Isunya terletak dalam penciptaan objek Rawak baharu dalam kaedah RandomString. Ini memulakan penjana nombor rawak dengan benih yang sama setiap kali, membawa kepada urutan nombor rawak yang sama dan, akhirnya, rentetan rawak yang sama.

Penyelesaian:

Untuk memastikan dua rentetan rawak yang berbeza, objek Rawak harus dibuat di luar kaedah RandomString dan dibuat statik. Ini memastikan bahawa benih yang sama digunakan sepanjang hayat aplikasi, menghasilkan urutan nombor rawak yang konsisten dan rentetan yang berbeza pada setiap panggilan.

Kod Diubah Suai:

private static Random random = new Random((int)DateTime.Now.Ticks); // Random object created outside method

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();
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Penjana Rentetan Rawak Saya Terus Menghasilkan Rentetan Yang Sama?. 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