Rumah >pembangunan bahagian belakang >C++ >Mengapa penjana nombor rawak saya hanya menghasilkan satu nombor, dan bagaimana saya boleh memperbaikinya?

Mengapa penjana nombor rawak saya hanya menghasilkan satu nombor, dan bagaimana saya boleh memperbaikinya?

Linda Hamilton
Linda Hamiltonasal
2025-02-03 08:21:08658semak imbas

Why Does My Random Number Generator Only Produce One Number, and How Can I Fix It?

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

contoh untuk memastikan bahawa setiap kali
<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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn