Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Algoritma Kocok Fisher-Yates untuk Kocok Dek Kad dalam C#?

Bagaimanakah Saya Boleh Melaksanakan Algoritma Kocok Fisher-Yates untuk Kocok Dek Kad dalam C#?

DDD
DDDasal
2025-01-05 05:31:38277semak imbas

How Can I Implement the Fisher-Yates Shuffle Algorithm to Shuffle a Deck of Cards in 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:

  1. Dalam Program.cs, tambah baris berikut pada penghujung Utama kaedah:
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());
  • Ini membaca bilangan shuffle daripada pengguna dan memulakan dek sebagai tatasusunan integer.
  1. Dalam Dek .cs, tambah baris berikut pada ShuffleCards kaedah:
FisherYates.Shuffle(deck_ints);
  • Ini mengocok dek menggunakan algoritma Fisher-Yates.

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!

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