使用另一个数组

时间:2017-12-02 06:15:47

标签: c++ arrays

我试图混合数组顺序,而不会丢失任何内容。这是一副纸牌,我想把它混合起来。

我有多个文件用于沟通,这就是问题所在:

class Deck{

    private:
         PlayingCard deck[52];

    public:
         Deck();

         void shuffle();

         double draw(); 

         void printDeck();
};

然后我创建了一个甲板的实例,我能够正确地打印整个甲板,我只是想把它混合起来:

void Deck::shuffle(){
    int randNum;
    string tmp;
    srand(time(NULL));

    for(int i = 0; i < 52; i++){
        randNum = rand()%52;
        deck[i] = deck[randNum];
    }   
}

所以我知道我正在分配一个随机数,没有什么能阻止它获得两次相同的随机数。我不确定是否有另一种方法可以调用一个随机数而不会得到它两次,或者是否有另一种方法我应该调用。因为我怎么把它混合在一起但它不能打印同一张卡两次,这是不可能的。

1 个答案:

答案 0 :(得分:0)

    deck[i] = deck[randNum];

这会产生不正确的行为,因为你正在制作第二副牌[randNum](只要randNum!= i)

如果你想交换两个号码,你可以做

PlayingCard tmp = deck[i];
deck[i] = deck[randNum];
deck[randNum] = tmp;

或者

std::swap(deck[i], deck[randNum);

或者正如Igor Tandetnik指出的那样,你可以使用std :: shuffle而不是整个循环。