将一副牌循环100次(一副牌) intmain() { srand(time(NULL));//使用起始值设定随机数 常量字符串排名[]={“Ace”、“2”、“3”、“4”、“5”、“6”、“7”, “八”、“九”、“十”、“杰克”、“女王”、“国王”}; 常量字符串适合[]={ “钻石”、“红心”、“黑桃”、“梅花” };//52张牌的阵法,每个牌4套,13个等级(1对国王) int ranksindex=rand()%13;//提款卡1的随机索引 int suitsindex=rand()%4; int ranksindex2=rand()%13;//绘图卡2的随机索引 int suitsindex2=rand()%4; 字符串card1,card2; int计数器=0; 整数倍=1000; int i; 对于(i=0;i计算一次值并将其赋值给 RANKINDEX 。在C++中分配给 int 复制即时值,而不是表达式。随后的使用 RANKINDEX 将始终具有相同的值,除非您分配一个新的值。 int ranksindex = rand() % 13; //random index for drawing card 1 int suitsindex = rand() % 4; int ranksindex2 = rand() % 13; // random index for drawing card 2 int suitsindex2 = rand() % 4; constexpr auto card_ranks_count = 13; constexpr auto card_suits_count = 4; const int random_card = rand() % (card_ranks_count * card_suits_count); const auto indexes = std::div(random_card, card_ranks_count); const int ranksindex = indexes.rem; const int suitsindex = indexes.quot;

将一副牌循环100次(一副牌) intmain() { srand(time(NULL));//使用起始值设定随机数 常量字符串排名[]={“Ace”、“2”、“3”、“4”、“5”、“6”、“7”, “八”、“九”、“十”、“杰克”、“女王”、“国王”}; 常量字符串适合[]={ “钻石”、“红心”、“黑桃”、“梅花” };//52张牌的阵法,每个牌4套,13个等级(1对国王) int ranksindex=rand()%13;//提款卡1的随机索引 int suitsindex=rand()%4; int ranksindex2=rand()%13;//绘图卡2的随机索引 int suitsindex2=rand()%4; 字符串card1,card2; int计数器=0; 整数倍=1000; int i; 对于(i=0;i计算一次值并将其赋值给 RANKINDEX 。在C++中分配给 int 复制即时值,而不是表达式。随后的使用 RANKINDEX 将始终具有相同的值,除非您分配一个新的值。 int ranksindex = rand() % 13; //random index for drawing card 1 int suitsindex = rand() % 4; int ranksindex2 = rand() % 13; // random index for drawing card 2 int suitsindex2 = rand() % 4; constexpr auto card_ranks_count = 13; constexpr auto card_suits_count = 4; const int random_card = rand() % (card_ranks_count * card_suits_count); const auto indexes = std::div(random_card, card_ranks_count); const int ranksindex = indexes.rem; const int suitsindex = indexes.quot;,c++,string,C++,String,上面的代码应该在for循环的内部 对于每个回合,您都希望找到随机ranksIndex和suitsIndex。现在,您只需在For循环中查找一次并多次使用它。正如重新格式化代码后可以看到的那样,随机值是在循环外部读取的,因此此代码必须在循环内部移动 我相信通过得到2个随机数,所选卡片的结果分布将不太均匀 由于您正在查找52张卡中的1张,因此只应生成1个随机值,然后该值应映射到一张卡 以下是一个例子: int ranksindex = rand() % 13; //random index for

上面的代码应该在for循环的内部


对于每个回合,您都希望找到随机ranksIndex和suitsIndex。现在,您只需在For循环中查找一次并多次使用它。

正如重新格式化代码后可以看到的那样,随机值是在循环外部读取的,因此此代码必须在循环内部移动


我相信通过得到2个随机数,所选卡片的结果分布将不太均匀

由于您正在查找52张卡中的1张,因此只应生成1个随机值,然后该值应映射到一张卡

以下是一个例子:

int ranksindex = rand() % 13; //random index for drawing card 1
int suitsindex = rand() % 4; 

int ranksindex2 = rand() % 13; // random index for drawing card 2
int suitsindex2 = rand() % 4;

[1] :-我的输出图片您需要在循环内计算
ranksindex
suitsindex
等,最好使用
std::uniform_int_distribution
而不是
rand
而不是使用字符串,使用0-51之间的索引。仅用于显示,将其转换为字符串。
int ranksindex=rand()% 13;< /C>计算一次值并将其赋值给<代码> RANKINDEX 。在C++中分配给<代码> int <代码>复制即时值,而不是表达式。随后的使用<代码> RANKINDEX 将始终具有相同的值,除非您分配一个新的值。
int ranksindex = rand() % 13; //random index for drawing card 1
int suitsindex = rand() % 4; 

int ranksindex2 = rand() % 13; // random index for drawing card 2
int suitsindex2 = rand() % 4;
constexpr auto card_ranks_count = 13;
constexpr auto card_suits_count = 4;

const int random_card = rand() % (card_ranks_count * card_suits_count);

const auto indexes = std::div(random_card, card_ranks_count);

const int ranksindex = indexes.rem;
const int suitsindex = indexes.quot;