C++生成兰特数

Mic*_*mos 2 c++ random blackjack

在C++中是否可以使用rand生成1-52之间的数字,但声明它不能是23?比如创建一个二十一点游戏,你需要确保一个玩家在随机生成第一个游戏后无法获得相同的卡.

Pet*_*ker 13

当然.

int i = 23;
while (i == 23)
    i = rand() % 52 + 1;
Run Code Online (Sandbox Code Playgroud)

在生成具有所需分布的随机数时,丢弃不可接受的值是很常见的.

但是,对于二十一点游戏,您需要处理多张卡片.最好有一个完整的牌组并将其洗牌(std::random_shuffle),然后从装有牌组的任何集装箱的一端取出牌.

  • 更一般地说,在一个`std :: array <card> deck`中创建一副牌,用所有52张卡初始化.然后调用`std :: random_shuffle(deck.begin(),deck.end())`.然后将带有索引的卡交易到`array`对象.第一张牌是`deck [0]`,第二张牌是`deck [1]`,第三张牌是`deck [2]`等. (2认同)