How to pick 5 random cards from a 52‑card deck in PHP

1 Answer

0 votes
/*
A standard deck of 52 playing cards consists of four suits:
spades (♠), hearts (♥), diamonds (♦), and clubs (♣).

Each suit contains 13 ranks:
Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, King.

Cards of spades and clubs are black, while hearts and diamonds are red.

Color is informational only — it does not affect shuffling or random selection.
*/

/*
    This program picks 5 random cards from a standard 52‑card deck.

    It uses:
    - Arrays to store ranks, suits, and the deck
    - shuffle() for efficient randomization (PHP’s built‑in Fisher–Yates)
    - Functions for clean structure

    Algorithm:
    1. Build the deck (52 strings).
    2. Shuffle using shuffle().
    3. Print the first 5 cards.
*/

function buildDeck(): array {
    $ranks = ["2","3","4","5","6","7","8","9","10","J","Q","K","A"];
    $suits = ["Clubs", "Diamonds", "Hearts", "Spades"];

    $deck = [];

    // Combine each rank with each suit → 52 unique cards
    foreach ($suits as $suit) {
        foreach ($ranks as $rank) {
            $deck[] = "$rank of $suit";
        }
    }

    return $deck;
}

function shuffleDeck(array &$deck): void {
    // PHP's shuffle() uses Fisher–Yates internally
    shuffle($deck);
}

// Step 1: Build the deck
$deck = buildDeck();

// Step 2: Shuffle the deck
shuffleDeck($deck);

// Step 3: Draw the first 5 cards
echo "Your 5 random cards:\n";
for ($i = 0; $i < 5; $i++) {
    echo $deck[$i] . "\n";
}


/*
run:

Your 5 random cards:
9 of Hearts
5 of Spades
4 of Clubs
Q of Spades
J of Clubs

*/

 



answered 1 day ago by avibootz
...