Diberikan penghitungan sewenang-wenang dalam C #, bagaimana cara memilih nilai acak?
(Saya tidak menemukan pertanyaan yang sangat mendasar ini di SO. Saya akan mengirimkan jawaban saya sebentar lagi sebagai referensi untuk siapa pun, tapi jangan ragu untuk mengirim jawaban Anda sendiri.)
random
dalam loop ketat - jika tidak, Anda akan tetap mendapatkan nilai yang sama.Gunakan Enum.GetValues untuk mengambil larik semua nilai. Kemudian pilih item array acak.
Uji:
->
sumber
Anda bisa melakukan ini:
Tidak perlu menyimpan array
sumber
GetNames
mengembalikan array.Inilah versi alternatif sebagai
Extension Method
penggunaanLINQ
.sumber
Panggilan
Enum.GetValues
; ini mengembalikan array yang mewakili semua nilai yang mungkin untuk enum Anda. Pilih item acak dari array ini. Keluarkan item itu kembali ke tipe enum asli.sumber
Ini adalah fungsi generik untuk itu. Simpan ciptaan RNG di luar kode frekuensi tinggi.
Contoh penggunaan:
sumber
Secara pribadi, saya penggemar metode ekstensi, jadi saya akan menggunakan sesuatu seperti ini (walaupun bukan benar-benar ekstensi, tampilannya mirip):
sumber
public static T Of<T>() where T : Enum
docs.microsoft.com/en-us/visualstudio/releasenotes/…Diadaptasi sebagai ekstensi kelas acak:
Contoh penggunaan:
sumber
Anda juga dapat memberikan nilai acak:
Tetapi Anda harus menggunakan pengacak yang lebih baik seperti yang ada di perpustakaan saya ini.
sumber