Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Subset Rawak Koleksi Dengan Cekap Menggunakan LINQ?
Mengambil SubKoleksi Rawak dengan Cekap dengan Kocok
Cabaran untuk mendapatkan subset rawak koleksi sering dihadapi dalam pengaturcaraan. LINQ menyediakan mekanisme serba boleh untuk memanipulasi pengumpulan data, dan pembangun sering mencari pendekatan yang dioptimumkan untuk mendapatkan subset rawak.
Penyelesaian Cadangan: Melaksanakan Fisher-Yates-Durstenfeld Shuffle
Satu optimum kaedah untuk mencapai ini adalah melalui shuffle Fisher-Yates-Durstenfeld. Teknik ini melibatkan pemilihan elemen rawak secara berulang daripada koleksi sumber dan menukarnya dengan elemen terakhir yang tidak diisih, memastikan setiap elemen mempunyai peluang yang sama untuk dipilih.
Pelaksanaan melalui Kaedah Sambungan
Untuk meningkatkan kefungsian LINQ, kaedah sambungan yang dipanggil Shuffle telah dibangunkan, yang menggabungkan Fisher-Yates-Durstenfeld shuffle. Kaedah ini menerima input IEnumerable dan mengembalikan urutan yang dikocok. Selain itu, ia menyokong penghantaran contoh Rawak untuk penyesuaian.
Pelaksanaan melibatkan penukaran koleksi sumber kepada Senarai, memastikan akses rawak masa berterusan. Elemen kemudian ditukar secara berurutan untuk mencipta pilih atur rawak.
Contoh Penggunaan
Untuk menggunakan kaedah sambungan Kocok:
Contoh Kod
Coretan kod yang disediakan menunjukkan cara menggunakan sambungan Kocok untuk mendapatkan kocok subkoleksi saiz yang ditentukan:
// take n random items from yourCollection var randomItems = yourCollection.Shuffle().Take(n);
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Subset Rawak Koleksi Dengan Cekap Menggunakan LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!