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;
Contoh Output
Kod yang diubah suai akan menghasilkan dua rentetan rawak empat aksara yang unik, seperti sebagai:
UNTE-FWNU
bukannya pendua seperti:
UNTE-UNTE
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!