Rumah >pembangunan bahagian belakang >C++ >Mengapa penjana nombor rawak saya hanya menghasilkan satu nombor, dan bagaimana saya boleh memperbaikinya?
penjana nombor rawak hanya menghasilkan satu masalah dan penyelesaian nombor rawak
Artikel ini membincangkan fungsi penjana nombor rawak
hanya satu nombor rawak yang dihasilkan. Sebab akar masalah adalah bahawa fungsi ini mencipta contoh baru pada setiap panggilan. Oleh kerana keadaan dalaman contoh adalah berdasarkan pada inisialisasi jam sistem, dalam kitaran rapat, pelbagai panggilan akan mendapat nilai yang sama. RandomNumber
Random
Untuk menyelesaikan masalah ini dan pastikan ketepatan nombor rawak, contoh Random
harus dibuat dan digunakan semula. Kod berikut menunjukkan cara mencapai:
Random
Dengan menggunakan pernyataan , kami menyegerakkan lawatan
<code class="language-csharp">private static readonly Random random = new Random(); private static readonly object syncLock = new object(); public static int RandomNumber(int min, int max) { lock (syncLock) { return random.Next(min, max); } }</code>akan menghasilkan nombor rawak yang unik dalam baris yang sama.
lock
Kaedah lain adalah menggunakan Random
pembolehubah untuk mengekalkan contoh RandomNumber
untuk setiap benang untuk mengelakkan penyegerakan:
Atas ialah kandungan terperinci Mengapa penjana nombor rawak saya hanya menghasilkan satu nombor, dan bagaimana saya boleh memperbaikinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!