Rumah > pembangunan bahagian belakang > C++ > Bagaimana Saya Boleh Menjana Nombor Rawak Unik dalam C# Apabila System.Random Gagal?

Bagaimana Saya Boleh Menjana Nombor Rawak Unik dalam C# Apabila System.Random Gagal?

Mary-Kate Olsen
Lepaskan: 2025-01-21 13:07:12
asal
571 orang telah melayarinya

How Can I Generate Unique Random Numbers in C# When System.Random Fails?

Menangani Cabaran Penjanaan Nombor Rawak Unik dalam C#

Menjana nombor rawak unik adalah penting dalam banyak tugas pengaturcaraan. Walau bagaimanapun, kelas System.Random terbina dalam C# tidak semestinya menjamin keunikan. Ini boleh membawa kepada nombor pendua, seperti yang ditemui oleh seorang pembangun, walaupun ketika kejadian Random diisytiharkan di luar fungsi.

Masalah dan Penyelesaian yang Lebih Baik:

Benih yang digunakan dengan Random.Next() tidak mengawal keunikan secara langsung. Berikut ialah strategi yang lebih berkesan:

  1. Memanfaatkan Koleksi untuk Keunikan:

    • Kekalkan senarai untuk menyimpan nombor yang dijana.
    • Sebelum menambah nombor yang baru dijana, semak sama ada nombor itu sudah wujud dalam senarai. Hanya tambah jika ia unik.
    public Random a = new Random();
    public List<int> randomList = new List<int>();
    int MyNumber = 0;
    private void GenerateUniqueNumber()
    {
        MyNumber = a.Next(0, 10);
        if (!randomList.Contains(MyNumber))
            randomList.Add(MyNumber);
    }
    Salin selepas log masuk
  2. Membina Penjana Nombor Rawak Tersuai:

    • Buat penjana tersuai untuk memastikan keunikan dalam julat yang ditetapkan. Ini memerlukan pertimbangan teliti kes tepi dan pengoptimuman untuk prestasi.

Meneroka Perpustakaan Alternatif:

Beberapa alternatif menawarkan penjanaan nombor rawak yang dipertingkatkan:

  • RandomNumberGenerator: Pilihan yang lebih selamat dari segi kriptografi.
  • Guid.NewGuid(): Menjana pengecam unik global (GUID), sesuai apabila keunikan berurutan tidak penting.
  • Penjana dalam System.Numerics.Tensors: Menyediakan kaedah pensampelan rawak untuk pelbagai pengedaran.

Pendekatan terbaik bergantung pada keperluan aplikasi, kekangan prestasi dan tahap rawak yang diperlukan.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Menjana Nombor Rawak Unik dalam C# Apabila System.Random Gagal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan