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

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
    - Fisher–Yates shuffle for efficient randomization
    - Functions for clean structure

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

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

    const deck = [];

    // Combine each rank with each suit → 52 unique cards
    for (const suit of suits) {
        for (const rank of ranks) {
            deck.push(`${rank} of ${suit}`);
        }
    }

    return deck;
}

function shuffleDeck(deck) {
    // Fisher–Yates shuffle: efficient and unbiased
    for (let i = deck.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));

        const temp = deck[i];
        deck[i] = deck[j];
        deck[j] = temp;
    }
}

function main() {
    // Step 1: Build the deck
    const deck = buildDeck();

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

    // Step 3: Draw the first 5 cards
    console.log("Your 5 random cards:");
    for (let i = 0; i < 5; i++) {
        console.log(deck[i]);
    }
}

main();


/*
run:

Your 5 random cards:
4 of Spades
7 of Spades
6 of Spades
Q of Clubs
4 of Diamonds

*/

 



answered 1 day ago by avibootz
...