Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Algoritma Kocok Fisher-Yates untuk Kocok Dek Kad dalam C#?
Pengocokan Kad dalam C# menggunakan Algoritma Fisher-Yates
Dalam usaha pengaturcaraan ini, kami berhasrat untuk mengocok dek kad seberapa banyak kali dikehendaki oleh pengguna. Ini melibatkan mencipta kaedah yang menggunakan kelas System.Random untuk menjana integer rawak dan melaksanakan algoritma shuffle Fisher-Yates.
Struktur Program Sedia Ada:
Kod yang anda berikan terdiri daripada beberapa kelas termasuk Program.cs, Deck.cs, Enums.cs dan Card.cs. Kelas ini mentakrifkan struktur permainan kad anda.
Algoritma Kocok Kad:
Untuk melaksanakan algoritma kocok yang terkenal dikenali sebagai kocok Fisher-Yates, kami akan tambah kelas statik baharu yang dipanggil FisherYates. Kelas ini mengandungi kaedah berikut:
static public void Shuffle(int[] deck) { for (int n = deck.Length - 1; n > 0; --n) { int k = r.Next(n+1); int temp = deck[n]; deck[n] = deck[k]; deck[k] = temp; } }
Dalam kaedah ini, kami menjana indeks rawak k dalam julat 0 hingga n dan menukar elemen pada indeks n dan k. Proses ini diulang untuk setiap elemen dalam dek, mengocok elemen dengan berkesan.
Penyepaduan ke dalam Kod Anda:
Untuk menyepadukan kaedah shuffle ke dalam kod anda, anda boleh gunakan langkah berikut:
int[] deck_ints = new int[52]; for (int i = 0; i < deck_ints.Length; i++) { deck_ints[i] = i; } int num_shuffles = int.Parse(Console.ReadLine());
FisherYates.Shuffle(deck_ints);
Dengan mengikut langkah ini, anda boleh mengocok dek kad dengan berkesan seberapa banyak kali yang dinyatakan dan paparkan dek yang dikocok seperti yang dikehendaki.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Algoritma Kocok Fisher-Yates untuk Kocok Dek Kad dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!