如何在没有 C++ 重复项的情况下从牌组数组处理到玩家手牌数组?

How do I deal from a deck array to a player hand array without having duplicates in c++?

也许我错过了这个在另一个问题中得到的回答,但在搜索之后我似乎找不到我需要的答案。

这是我用来发牌的代码,它正确地将前两张牌的值更改为牌组数组中的随机整数。然而,正如所写的那样,代码有时会将重复的值传递给玩家手。

void Deal()
{
    for (int i = 0; i < 2; ++i)
    {
        playerHand[i] = deck[i];
        dealerHand[i] = deck[i + 2];

        if (playerHand[i] == 11)
        {
            cout << "BLACKJACK!! YOU WIN!!" << endl;
            WinHand();
        }

        else if (dealerHand[i] == 11)
        {
            cout << "Dealer Got Blackjack. Hand goes to dealer." << endl;
        }
        else
        {
            playerNextCard++;
            dealerNextCard++;
            deckNextCard = 4;
        }


    }
    for (size_t i = 0; i < 2; i++)
    {
        cout << playerHand[i] << endl;
    }
    cout << "? \n" << dealerHand[1] << endl;
    cout << "Money: " << money << endl;

    return;
}

闲家和庄家总是拿到前四张牌,除非抽到 11 提前结束。无论牌组是否洗牌,都有可能收到重复的整数。如果你想让每个抽奖整数唯一,那么你可以搜索牌组,直到前一个不匹配。您还必须考虑如果找不到唯一整数会发生什么。