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

Mengapa Penjana Rentetan Rawak Saya Terus Mengembalikan Rentetan Yang Sama?

Susan Sarandon
Lepaskan: 2025-01-05 09:24:38
asal
572 orang telah melayarinya

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

Penjana Rentetan Rawak Mengembalikan Rentetan Yang Sama

Isu biasa yang dihadapi dengan penjana rentetan rawak timbul apabila rentetan yang dijana kelihatan sama, walaupun semasa memanggil penjana berbilang kali. Masalah ini berpunca daripada fakta bahawa penjana dimulakan dalam fungsi, menyebabkan set nilai rawak yang sama dijana berulang kali.

Penyelesaian

Untuk memastikan rentetan rawak yang berbeza, tika Rawak harus dicipta di luar fungsi, di mana ia kekal boleh diakses sepanjang kitaran hayat program. Dengan berbuat demikian, tika itu mengekalkan keadaannya, menghalang penjanaan rentetan yang sama.

Berikut ialah versi kod anda yang dikemas kini:

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

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

Sekarang, apabila anda memanggil fungsi RandomString dua kali, ia akan menghasilkan dua rentetan empat aksara yang berbeza, menghasilkan output yang serupa dengan "UNTE-FWNU" dan bukannya "UNTE-UNTE."

Atas ialah kandungan terperinci Mengapa Penjana Rentetan Rawak Saya Terus Mengembalikan 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