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
Lepaskan: 2025-01-05 05:31:38
asal
336 orang telah melayarinya

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;
    }
}
Salin selepas log masuk

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());
Salin selepas log masuk
  • 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);
Salin selepas log masuk
  • 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 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan