Rumah >pembangunan bahagian belakang >C++ >Mengapa penjana nombor rawak saya menghasilkan nilai yang sama, dan bagaimana saya dapat memperbaikinya?
penyelesaian masalah dan menetapkan nombor rawak berulang
fungsi, yang bertujuan untuk menjana bilangan bulat rawak dalam julat tertentu, menghasilkan nilai yang sama apabila beberapa RandomNumber
contoh dicipta dalam gelung. Ini berlaku kerana setiap Random
contohnya memulakan menggunakan masa semasa. Dalam gelung yang cepat, masa kekal hampir tidak berubah, yang membawa kepada penjanaan nombor rawak berulang. Random
untuk semua penjanaan nombor. Ini menghalang pelbagai benang dari secara serentak mengubah keadaan dalaman penjana. Keselamatan benang sangat penting di sini. Random
<code class="language-csharp">private static readonly Random random = new Random(); // Single instance public static int RandomNumber(int min, int max) { lock (random) // Thread-safe access { return random.Next(min, max); } }</code>Dengan menggunakan pernyataan
untuk menyegerakkan akses kepada contoh lock
tunggal, kami memastikan setiap benang mendapat nombor rawak yang unik. Kaedah ini adalah efisien dan selamat, menjamin rawak yang dikehendaki. random
Atas ialah kandungan terperinci Mengapa penjana nombor rawak saya menghasilkan nilai yang sama, dan bagaimana saya dapat memperbaikinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!