Ketidakkonsistenan Penjanaan Nombor Rawak: Output Random.Next
Sama
Artikel ini menangani isu biasa dalam C# di mana berbilang kejadian kelas, setiap satu menggunakan Random.Next()
, menghasilkan urutan nombor rawak yang sama. Tingkah laku yang seolah-olah bercanggah ini berlaku apabila berbilang Random
objek dibuat seketika secara berturut-turut.
Punca pokok ialah mekanisme pembenihan lalai kelas Random
. Ia menggunakan jam sistem sebagai benih. Jika berbilang Random
objek dicipta dalam tempoh masa yang sangat singkat, objek tersebut menerima nilai benih yang hampir sama, yang membawa kepada jujukan nombor "rawak" yang sama.
Penyelesaian adalah mudah: Daripada mencipta objek Random
baharu untuk setiap tika, buat satu objek Random
dan gunakan semula objek itu merentas semua kejadian. Contoh tunggal ini akan menjana urutan nombor rawak yang unik, menyelesaikan isu output yang sama. Hantar objek Random
kongsi ini sebagai parameter kepada pembina kelas.
Atas ialah kandungan terperinci Kenapa Random.Next mengembalikan nilai yang sama untuk keadaan yang berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!