Memahami Isu Penjanaan Nombor Rawak dalam Gelung
Masalah:
Isu biasa timbul apabila menggunakan Random.Next
dalam gelung untuk menjana nombor rawak. Jika anda mencipta objek Random
baharu di dalam gelung untuk setiap lelaran, anda akan sering melihat nombor "rawak" yang berulang atau boleh diramal. Ini benar terutamanya dalam gelung berlari pantas.
Penjelasan:
Punca utama terletak pada pemulaan objek Random
. Setiap Random
contoh disemai menggunakan jam sistem. Jika berbilang kejadian dibuat dalam tempoh masa yang sangat singkat (seperti yang sering berlaku dalam gelung), mereka menerima nilai benih yang sama. Ini membawa kepada setiap Random
objek menghasilkan jujukan nombor rawak pseudo yang sama.
Penyelesaian:
Penyelesaian adalah mudah: cipta objek tunggal Random
di luar gelung dan gunakan semula untuk semua generasi nombor rawak dalam gelung. Ini memastikan urutan nombor rawak yang konsisten, namun tidak dapat diramalkan dijana. Hantarkan contoh Random
tunggal ini mengikut keperluan kepada mana-mana kaedah yang memerlukan nombor rawak.
Atas ialah kandungan terperinci Kenapa rawak.next menghasilkan nilai berulang dalam gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!