Rumah >pembangunan bahagian belakang >C++ >Mengapa penjana nombor rawak saya menghasilkan nilai yang sama, dan bagaimana saya dapat memperbaikinya?

Mengapa penjana nombor rawak saya menghasilkan nilai yang sama, dan bagaimana saya dapat memperbaikinya?

Patricia Arquette
Patricia Arquetteasal
2025-02-03 08:36:10745semak imbas

Why Does My Random Number Generator Produce Identical Values, and How Can I Fix It?

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

Penyelesaiannya adalah menggunakan contoh tunggal, dikongsi

untuk semua penjanaan nombor. Ini menghalang pelbagai benang dari secara serentak mengubah keadaan dalaman penjana. Keselamatan benang sangat penting di sini. Random

inilah kod yang lebih baik:

<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!

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